From 5f5be796b0cff5eb4da83d8f3a1bead25b6583b8 Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Tue, 3 Feb 2004 23:01:58 +0000 Subject: [PATCH] Changed a couple sizeof calls and improved some string handling in the {send,recv}_exclude_list() calls. --- exclude.c | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/exclude.c b/exclude.c index ee8016fd..d7fe9240 100644 --- a/exclude.c +++ b/exclude.c @@ -43,7 +43,7 @@ static struct exclude_struct *make_exclude(const char *pattern, int include) ret = new(struct exclude_struct); if (!ret) out_of_memory("make_exclude"); - memset(ret, 0, sizeof(*ret)); + memset(ret, 0, sizeof ret[0]); if (strncmp(pattern,"- ",2) == 0) { pattern += 2; @@ -92,7 +92,7 @@ static struct exclude_struct *make_exclude(const char *pattern, int include) static void free_exclude(struct exclude_struct *ex) { free(ex->pattern); - memset(ex,0,sizeof(*ex)); + memset(ex, 0, sizeof ex[0]); free(ex); } @@ -332,15 +332,18 @@ void send_exclude_list(int f) return; } - for (i=0;exclude_list[i];i++) { - int l; - char pattern[MAXPATHLEN]; + for (i = 0; exclude_list[i]; i++) { + unsigned int l; + char pattern[MAXPATHLEN+1]; - strlcpy(pattern,exclude_list[i]->pattern,sizeof(pattern)); - if (exclude_list[i]->directory) strlcat(pattern,"/", sizeof(pattern)); + l = strlcpy(pattern, exclude_list[i]->pattern, sizeof pattern); + if (l == 0 || l >= MAXPATHLEN) + continue; + if (exclude_list[i]->directory) { + pattern[l++] = '/'; + pattern[l] = '\0'; + } - l = strlen(pattern); - if (l == 0) continue; if (exclude_list[i]->include) { write_int(f,l+2); write_buf(f,"+ ",2); @@ -356,12 +359,13 @@ void send_exclude_list(int f) void recv_exclude_list(int f) { - char line[MAXPATHLEN]; + char line[MAXPATHLEN+1]; /* Allows a trailing slash on a max-len dir */ unsigned int l; - while ((l=read_int(f))) { - if (l >= MAXPATHLEN) overflow("recv_exclude_list"); - read_sbuf(f,line,l); + while ((l = read_int(f)) != 0) { + if (l >= sizeof line) + overflow("recv_exclude_list"); + read_sbuf(f, line, l); add_exclude(&exclude_list, line, ADD_EXCLUDE); } } -- 2.34.1