]> git.deb.at Git - pkg/abook.git/commitdiff
fixed string truncation in mutt inport filter
authorJaakko Heinonen <jheinonen@users.sourceforge.net>
Thu, 25 Mar 2004 18:19:38 +0000 (18:19 +0000)
committerJaakko Heinonen <jheinonen@users.sourceforge.net>
Thu, 25 Mar 2004 18:19:38 +0000 (18:19 +0000)
filter.c

index 9f57ee95af5078317ef4e5254b4abdd608124037..a12ddc76868996cf7448bbc55eb8564718d80717 100644 (file)
--- a/filter.c
+++ b/filter.c
@@ -618,6 +618,7 @@ static int
 mutt_read_line(FILE *in, char **alias, char **rest)
 {
        char *line, *ptr, *tmp;
 mutt_read_line(FILE *in, char **alias, char **rest)
 {
        char *line, *ptr, *tmp;
+       size_t alias_len;
 
        if( !(line = ptr = getaline(in)) )
                return 1; /* error / EOF */
 
        if( !(line = ptr = getaline(in)) )
                return 1; /* error / EOF */
@@ -640,13 +641,16 @@ mutt_read_line(FILE *in, char **alias, char **rest)
        while( ! ISSPACE(*ptr) )
                ptr++;
 
        while( ! ISSPACE(*ptr) )
                ptr++;
 
-       if( (*alias = (char *)malloc(ptr - tmp)) == NULL) {
+       /* includes also the trailing zero */
+       alias_len = (size_t)(ptr - tmp + 1);
+
+       if( (*alias = (char *)malloc(alias_len)) == NULL) {
                free(line);
                return 1;
        }
 
                free(line);
                return 1;
        }
 
-       strncpy(*alias, tmp, ptr - tmp - 1);
-       *(*alias + (ptr - tmp - 1)) = 0;
+       strncpy(*alias, tmp, alias_len - 1);
+       *(*alias + alias_len - 1) = 0;
 
        while(ISSPACE(*ptr))
                ptr++;
 
        while(ISSPACE(*ptr))
                ptr++;