From b9539de0ffa696b5f8debe2d3e91e4eab81004fa Mon Sep 17 00:00:00 2001 From: kcwu Date: Thu, 20 Sep 2007 17:18:53 +0000 Subject: * fix bug: don't getdata() on non-local variable directly, to avoid reentrant crash. git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3564 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- mbbsd/chicken.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'mbbsd/chicken.c') diff --git a/mbbsd/chicken.c b/mbbsd/chicken.c index d57a3bfe..f73d8c5a 100644 --- a/mbbsd/chicken.c +++ b/mbbsd/chicken.c @@ -101,6 +101,7 @@ new_chicken(void) { chicken_t *mychicken = &cuser.mychicken; int price, i; + char tmp_name[sizeof(mychicken->name)]; clear(); move(2, 0); @@ -128,9 +129,11 @@ new_chicken(void) return 0; } vice(price, "寵物蛋"); - while (strlen(mychicken->name) < 3) - getdata(8, 0, "幫牠取個好名字:", mychicken->name, - sizeof(mychicken->name), DOECHO); + strlcpy(tmp_name, mychicken->name, sizeof(tmp_name)); + while (strlen(tmp_name) < 3) + getdata(8, 0, "幫牠取個好名字:", tmp_name, + sizeof(tmp_name), DOECHO); + strlcpy(mychicken->name, tmp_name, sizeof(mychicken->name)); log_file(CHICKENLOG, LOG_CREAT | LOG_VF, ANSI_COLOR(31) "%s " ANSI_RESET "養了一隻叫" ANSI_COLOR(33) " %s " ANSI_RESET "的 " -- cgit v1.2.3