diff --git a/src/ticket.c b/src/ticket.c index f0ba74b9..09743f7d 100644 --- a/src/ticket.c +++ b/src/ticket.c @@ -369,8 +369,7 @@ int list_ticket(char **pdata, unsigned int *len) *pdata = NULL; *len = 0; - alloc = 256 + - booth_conf->ticket_count * (BOOTH_NAME_LEN * 2 + 128); + alloc = booth_conf->ticket_count * (BOOTH_NAME_LEN * 2 + 128); data = malloc(alloc); if (!data) return -ENOMEM; @@ -411,8 +410,10 @@ int list_ticket(char **pdata, unsigned int *len) cp += snprintf(cp, alloc - (cp - data), "\n"); } - if (alloc - (cp - data) <= 0) + if (alloc - (cp - data) <= 0) { + free(data); return -ENOMEM; + } } *pdata = data;