diff options
Diffstat (limited to 'src/triplet.c')
-rw-r--r-- | src/triplet.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/triplet.c b/src/triplet.c index 6bd9e6a..9f051db 100644 --- a/src/triplet.c +++ b/src/triplet.c @@ -347,13 +347,14 @@ format_file_data (struct file_triplet *trp, enum file_type type, char **pret) char *sptr; size_t slen; int pad; char *user_name; char *group_name; struct tm *tm; - char *buf; + char *buf = NULL; + size_t size = 0; if (!info->name) return 1; /* MODE OWNER GROUP SIZE MTIME FILE_NAME MD5SUM? */ @@ -382,16 +383,18 @@ format_file_data (struct file_triplet *trp, enum file_type type, char **pret) /* Figure out padding and format the buffer */ slen = strlen (sptr); pad = strlen (user_name) + 1 + strlen (group_name) + 1 + slen; if (pad > ugswidth) ugswidth = pad; - asprintf (&buf, - "%s %s %s %*s %s %s", - modes, user_name, group_name, ugswidth - pad + slen, sptr, - timebuf, info->name); + if (grecs_asprintf (&buf, &size, + "%s %s %s %*s %s %s", + modes, user_name, group_name, ugswidth - pad + slen, + sptr, + timebuf, info->name)) + xalloc_die (); *pret = buf; return 0; } static const char * expand_triplet_ls_full (struct metadef *def, void *data) @@ -542,14 +545,16 @@ expand_user_email (struct metadef *def, void *data) static const char * expand_email_user (struct metadef *def, void *data) { struct file_triplet *trp = data; if (trp->uploader) { - asprintf (&def->storage, "\"%s\" <%s>", - trp->uploader->realname, trp->uploader->email); + size_t size = 0; + if (grecs_asprintf (&def->storage, &size, "\"%s\" <%s>", + trp->uploader->realname, trp->uploader->email)) + xalloc_die (); def->value = def->storage; } return def->value; } static const char * @@ -588,13 +593,16 @@ expand_check_result (struct metadef *def, void *data) char *p = umaxtostr (WEXITSTATUS (status), sbuf); def->storage = xstrdup (p); } else if (WIFSIGNALED (status)) { char *p = umaxtostr (WTERMSIG (status), sbuf); - asprintf (&def->storage, "SIG+%s", p); + size_t size = 0; + def->storage = NULL; + if (grecs_asprintf (&def->storage, &size, "SIG+%s", p)) + xalloc_die (); } else def->storage = "[unrecognized return code]"; return def->value = def->storage; } |