On Sun, Feb 17, 2013 at 11:32 AM, Mike Miller <mtmiller at ieee.org> wrote: > A possible memory leak in the buf_append function was just reported > [1]. At a glance it looks like most of the functions in http.c that > use buf_append/buf_error will return ENOMEM back up the stack and > openconnect will exit immediately. Users of the library should > presumably do the same. I think it's still worth fixing to be safe, > but do you see any possible conditions where this could be a problem? > Thanks. > > [1] http://bugs.debian.org/700805 Good catch - this pattern shows up in a couple of places, e.g. body = realloc(body, done + chunklen + 1); *lineptr = realloc(*lineptr, *n); opt = realloc(opt, sizeof(*opt) + opt->nr_choices * sizeof(*choice)); I wouldn't normally expect to be able to recover from exhausting the heap space anyway, since many other random library calls will start breaking. But for the sake of argument would it make sense to wrap realloc() with something like this? int safe_realloc(void **ptr, size_t size) { void *newptr = realloc(*ptr, size); if (newptr) { *ptr = newptr; return 0; } free(*ptr); return -ENOMEM; }