diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lock.c | 12 | ||||
-rw-r--r-- | src/report.c | 5 | ||||
-rw-r--r-- | src/timer.c | 18 | ||||
-rw-r--r-- | src/triplet.c | 24 |
4 files changed, 40 insertions, 19 deletions
@@ -175,23 +175,24 @@ expire_stale_lock (const char *file) } int wydawca_lock (const char *lockname) { char *tempname = NULL; + size_t size = 0; int rc; if (!enable_locking) return 0; expire_stale_lock (lockname); /* build the NFS hitching-post to the lock file */ - asprintf (&tempname, "%s.%lu.%lu.%s", - lockname, - (unsigned long) getpid (), - (unsigned long) time (NULL), xgethostname ()); + grecs_asprintf (&tempname, &size, "%s.%lu.%lu.%s", + lockname, + (unsigned long) getpid (), + (unsigned long) time (NULL), xgethostname ()); if (!tempname) return LOCK_FAILURE; if (lock_timeout) { time_t start = time (NULL); @@ -232,14 +233,15 @@ fix_tagname (const char *tag) } char * wydawca_lockname (const char *tag) { char *lockname = NULL; + size_t size = 0; char *tagname = fix_tagname (tag); - asprintf (&lockname, "%s/LCK.%s", lockdir, tagname); + grecs_asprintf (&lockname, &size, "%s/LCK.%s", lockdir, tagname); if (!lockname) xalloc_die (); free (tagname); return lockname; } diff --git a/src/report.c b/src/report.c index 84a9592..b09c7c7 100644 --- a/src/report.c +++ b/src/report.c @@ -31,20 +31,23 @@ report_init () void report_add (const char *fmt, ...) { va_list ap; char *str = NULL; + size_t size = 0; + va_start (ap, fmt); - vasprintf (&str, fmt, ap); + grecs_vasprintf (&str, &size, fmt, ap); va_end (ap); if (str) { obstack_grow (&report_stk, str, strlen (str)); obstack_1grow (&report_stk, '\n'); } + free (str); } void report_finish () { obstack_1grow (&report_stk, 0); diff --git a/src/timer.c b/src/timer.c index 71f63f9..1634462 100644 --- a/src/timer.c +++ b/src/timer.c @@ -156,14 +156,15 @@ timer_get_system (wydawca_timer_t t) } char * timer_format_time (double t) { char *str = NULL; + size_t size = 0; if (t < 600) - asprintf (&str, "%0.3f", t); + grecs_asprintf (&str, &size, "%0.3f", t); else { long int s, m, h, d; s = (long int) t; d = s / (3600 * 24); @@ -171,18 +172,20 @@ timer_format_time (double t) h = s / 3600; s -= h * 3600; m = s / 60; s -= m * 60; if (d) - asprintf (&str, "%ld+%02ld:%02ld:%02ld", d, h, m, s); + grecs_asprintf (&str, &size, "%ld+%02ld:%02ld:%02ld", d, h, m, s); else if (h) - asprintf (&str, "%02ld:%02ld:%02ld", h, m, s); + grecs_asprintf (&str, &size, "%02ld:%02ld:%02ld", h, m, s); else - asprintf (&str, "%02ld:%02ld", m, s); + grecs_asprintf (&str, &size, "%02ld:%02ld", m, s); } + if (!str) + xalloc_die (); return str; } size_t timer_get_count () { @@ -200,13 +203,18 @@ _fill_meta (void *sym, void *data) { struct timer_slot *slot = sym; struct timer_data *tp = data; #define CREATE_DEF(arg) \ if (tp->num) \ { \ - asprintf (&tp->def->kw, "timer:%s:%s", slot->name, #arg); \ + char *buf = NULL; \ + size_t size = 0; \ + grecs_asprintf (&buf, &size, "timer:%s:%s", slot->name, #arg); \ + if (!buf) \ + xalloc_die (); \ + tp->def->kw = buf; \ tp->def->storage = timer_format_time (__cat2__(timer_get_,arg) (slot)); \ tp->def->value = tp->def->storage; \ tp->def->expand = NULL; \ tp->def++; \ tp->num--; \ } 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; } |