pwent = getpwnam(username);
- if( (tmp = (char *)malloc(strlen(pwent->pw_gecos) +1)) == NULL)
+ if((tmp = strdup(pwent->pw_gecos)) == NULL)
return strdup(username);
rtn = sscanf(pwent->pw_gecos, "%[^,]", 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 */
while( ! ISSPACE(*ptr) )
ptr++;
- if( (*alias = (char *)malloc(ptr-tmp+1)) == NULL) {
+ /* includes also the trailing zero */
+ alias_len = (size_t)(ptr - tmp + 1);
+
+ if( (*alias = (char *)malloc(alias_len)) == NULL) {
free(line);
return 1;
}
- strncpy(*alias, tmp, ptr-tmp);
- *(*alias + (ptr - tmp)) = 0;
+ strncpy(*alias, tmp, alias_len - 1);
+ *(*alias + alias_len - 1) = 0;
- while( ISSPACE(*ptr) )
+ while(ISSPACE(*ptr))
ptr++;
*rest = strdup(ptr);