diff options
author | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-09-09 09:10:30 +0800 |
---|---|---|
committer | piaip <piaip@63ad8ddf-47c3-0310-b6dd-a9e9d9715204> | 2005-09-09 09:10:30 +0800 |
commit | b36b48c02cb250e74679d8cae9ee4f69d0e0fb00 (patch) | |
tree | 07f8f9cc7a0bccdff6bacf4510c0b59ff775c2b8 /mbbsd/name.c | |
parent | 29839340cfd1f9b72fb14cd9652ca8c87a19d098 (diff) | |
download | pttbbs-b36b48c02cb250e74679d8cae9ee4f69d0e0fb00.tar pttbbs-b36b48c02cb250e74679d8cae9ee4f69d0e0fb00.tar.gz pttbbs-b36b48c02cb250e74679d8cae9ee4f69d0e0fb00.tar.bz2 pttbbs-b36b48c02cb250e74679d8cae9ee4f69d0e0fb00.tar.lz pttbbs-b36b48c02cb250e74679d8cae9ee4f69d0e0fb00.tar.xz pttbbs-b36b48c02cb250e74679d8cae9ee4f69d0e0fb00.tar.zst pttbbs-b36b48c02cb250e74679d8cae9ee4f69d0e0fb00.zip |
name complete did not check invalid input.
git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3143 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
Diffstat (limited to 'mbbsd/name.c')
-rw-r--r-- | mbbsd/name.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/mbbsd/name.c b/mbbsd/name.c index 5f6b9c5c..c764fb89 100644 --- a/mbbsd/name.c +++ b/mbbsd/name.c @@ -386,6 +386,7 @@ usercomplete(const char *prompt, char *data) int cwnum, x, y, origx, origy; int clearbot = NA, count = 0, morenum = 0; char ch; + int dashdirty = 0; /* TODO 節省記憶體. (不過這個 function 不常占記憶體...) */ cwbuf = malloc(MAX_USERS * (IDLEN + 1)); @@ -435,7 +436,12 @@ usercomplete(const char *prompt, char *data) move(y, x); continue; - } else if (ch != ' ' && count < STRLEN && isprint((int)ch)) { + } else if (!(count <= IDLEN && isprint((int)ch))) { + + /* invalid input */ + continue; + + } else if (ch != ' ') { int n; @@ -463,6 +469,12 @@ usercomplete(const char *prompt, char *data) int col, len; if (ch == ' ' && cwnum == 1) { + if(dashdirty) + { + move(2,0); + clrtoeol(); + printdash(cwlist, 0); + } strcpy(data, cwlist); move(y, x); outs(data + count); @@ -479,16 +491,18 @@ usercomplete(const char *prompt, char *data) move(2, 0); clrtobot(); printdash("使用者代號一覽表", 0); + dashdirty = 0; if(ch != ' ') { /* no such user */ move(2,0); - outs("無此使用者: "); + outs("* 目前無此使用者:"); outs(data); outs(" "); temp--; *temp = '\0'; + dashdirty = 1; } while (len + col < t_columns-1) { |