summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-08-16 13:39:17 +0800
committervictor <victor@63ad8ddf-47c3-0310-b6dd-a9e9d9715204>2005-08-16 13:39:17 +0800
commit46d670eedce001eb79f4ce5cc8f6ffaf2ad83b5d (patch)
tree70bede25e9ceab2711f456b941b1cad345194dd7
parent95bd148f89a965c00b11771ccdf1d7090f4f308a (diff)
downloadpttbbs-46d670eedce001eb79f4ce5cc8f6ffaf2ad83b5d.tar
pttbbs-46d670eedce001eb79f4ce5cc8f6ffaf2ad83b5d.tar.gz
pttbbs-46d670eedce001eb79f4ce5cc8f6ffaf2ad83b5d.tar.bz2
pttbbs-46d670eedce001eb79f4ce5cc8f6ffaf2ad83b5d.tar.lz
pttbbs-46d670eedce001eb79f4ce5cc8f6ffaf2ad83b5d.tar.xz
pttbbs-46d670eedce001eb79f4ce5cc8f6ffaf2ad83b5d.tar.zst
pttbbs-46d670eedce001eb79f4ce5cc8f6ffaf2ad83b5d.zip
include/common.h, mbbsd/friend.c: check buffer size
include/fpg.h: highlight the bug mbbsd/talk.c: change that odd time_t worked as a boolean to int git-svn-id: http://opensvn.csie.org/pttbbs/trunk/pttbbs@3046 63ad8ddf-47c3-0310-b6dd-a9e9d9715204
-rw-r--r--include/common.h3
-rw-r--r--include/fpg.h2
-rw-r--r--mbbsd/friend.c28
-rw-r--r--mbbsd/talk.c3
4 files changed, 19 insertions, 17 deletions
diff --git a/include/common.h b/include/common.h
index acbf688d..cc5e6980 100644
--- a/include/common.h
+++ b/include/common.h
@@ -220,6 +220,9 @@
#define MAX(a,b) (((a)>(b))?(a):(b))
#endif
+#define toSTR(x) __toSTR(x)
+#define __toSTR(x) #x
+
#define char_lower(c) ((c >= 'A' && c <= 'Z') ? c|32 : c)
#define STR_CURSOR "●"
diff --git a/include/fpg.h b/include/fpg.h
index f237b967..0065cba5 100644
--- a/include/fpg.h
+++ b/include/fpg.h
@@ -3,7 +3,7 @@
#define BTLEN 48 /* Length of board title */
#define NAMELEN 40 /* Length of username/realname */
#define FNLEN 33 /* Length of filename */
- /* Ptt 說這裡有bug*/
+ /* XXX Ptt 說這裡有bug*/
#define IDLEN 12 /* Length of bid/uid */
#define PASSLEN 14 /* Length of encrypted passwd field */
#define REGLEN 38 /* Length of registration data */
diff --git a/mbbsd/friend.c b/mbbsd/friend.c
index e88b0030..179a0482 100644
--- a/mbbsd/friend.c
+++ b/mbbsd/friend.c
@@ -163,9 +163,9 @@ friend_append(int type, int count)
if ((fp = fopen(sfile, "r")) != NULL) {
while (fgets(buf, 80, fp) && (unsigned)count <= friend_max[type]) {
- char the_id[15];
+ char the_id[IDLEN + 1];
- sscanf(buf, "%s", the_id); // XXX check buffer size
+ sscanf(buf, "%" toSTR(IDLEN) "s", the_id);
if (!file_exist_record(fpath, the_id)) {
if ((fp1 = fopen(fpath, "a"))) {
flock(fileno(fp1), LOCK_EX);
@@ -309,7 +309,7 @@ friend_water(const char *message, int type)
userinfo_t *uentp;
int tuid;
- sscanf(line, "%s", userid); // XXX check buffer size
+ sscanf(line, "%" toSTR(IDLEN) "s", userid);
if ((tuid = searchuser(userid, NULL)) && tuid != usernum &&
(uentp = (userinfo_t *) search_ulist(tuid)) &&
isvisible_uid(tuid))
@@ -322,7 +322,7 @@ friend_water(const char *message, int type)
void
friend_edit(int type)
{
- char fpath[80], line[80], uident[20];
+ char fpath[80], line[80], uident[IDLEN + 1];
int count, column, dirty;
FILE *fp;
char genbuf[200];
@@ -367,38 +367,38 @@ friend_edit(int type)
"(K)刪除整個名單(W)丟水球(Q)結束?[Q]" :
"(A)增加 (P)引入其他名單 (Q)結束?[Q]"),
uident, 3, LCECHO);
- if (*uident == 'a') {
+ if (uident[0] == 'a') {
move(1, 0);
usercomplete(msg_uid, uident);
if (uident[0] && searchuser(uident, uident) && !InNameList(uident)) {
friend_add(uident, type, NULL);
dirty = 1;
}
- } else if (*uident == 'p') {
+ } else if (uident[0] == 'p') {
friend_append(type, count);
dirty = 1;
- } else if (*uident == 'e' && count) {
+ } else if (uident[0] == 'e' && count) {
move(1, 0);
namecomplete(msg_uid, uident);
if (uident[0] && InNameList(uident)) {
friend_editdesc(uident, type);
}
- } else if (*uident == 'd' && count) {
+ } else if (uident[0] == 'd' && count) {
move(1, 0);
namecomplete(msg_uid, uident);
if (uident[0] && InNameList(uident)) {
friend_delete(uident, type);
dirty = 1;
}
- } else if (*uident == 'l' && count)
+ } else if (uident[0] == 'l' && count)
more(fpath, YEA);
- else if (*uident == 'k' && count) {
+ else if (uident[0] == 'k' && count) {
getdata(2, 0, "整份名單將會被刪除,您確定嗎 (a/N)?", uident, 3,
LCECHO);
- if (*uident == 'a')
+ if (uident[0] == 'a')
unlink(fpath);
dirty = 1;
- } else if (*uident == 'w' && count) {
+ } else if (uident[0] == 'w' && count) {
char wall[60];
if (!getdata(0, 0, "群體水球:", wall, sizeof(wall), DOECHO))
continue;
@@ -417,7 +417,7 @@ friend_edit(int type)
snprintf(genbuf, sizeof(genbuf), "%s.old", fpath);
if ((fp = fopen(genbuf, "r"))) {
while (fgets(line, 80, fp)) {
- sscanf(line, "%s", uident); // XXX check buffer size
+ sscanf(line, "%" toSTR(IDLEN) "s", uident);
sethomefile(genbuf, uident,
type == FRIEND_ALOHA ? "aloha" : "postnotify");
del_distinct(genbuf, cuser.userid);
@@ -427,7 +427,7 @@ friend_edit(int type)
strlcpy(genbuf, fpath, sizeof(genbuf));
if ((fp = fopen(genbuf, "r"))) {
while (fgets(line, 80, fp)) {
- sscanf(line, "%s", uident); // XXX check buffer size
+ sscanf(line, "%" toSTR(IDLEN) "s", uident);
sethomefile(genbuf, uident,
type == FRIEND_ALOHA ? "aloha" : "postnotify");
add_distinct(genbuf, cuser.userid);
diff --git a/mbbsd/talk.c b/mbbsd/talk.c
index ae889028..fb8cffc7 100644
--- a/mbbsd/talk.c
+++ b/mbbsd/talk.c
@@ -1732,9 +1732,8 @@ friend_descript(const userinfo_t * uentp, char *desc_buf, int desc_buflen)
return space_buf;
}
-/* XXX 為什麼 diff 是 time_t */
static const char *
-descript(int show_mode, const userinfo_t * uentp, time4_t diff)
+descript(int show_mode, const userinfo_t * uentp, int diff)
{
static char description[30];
switch (show_mode) {