Hello, t...@. tmpbuf is allocated via strdup(3) but it is leaved unfreed when we leave makedirs() function.
Index: util.c =================================================================== RCS file: /OpenBSD/src/usr.bin/patch/util.c,v retrieving revision 1.33 diff -u -r1.33 util.c --- util.c 27 Oct 2009 23:59:41 -0000 1.33 +++ util.c 7 Jan 2010 21:42:11 -0000 @@ -310,8 +310,10 @@ if (striplast) { char *s = strrchr(tmpbuf, '/'); - if (s == NULL) + if (s == NULL) { + free(tmpbuf); return; /* nothing to be done */ + } *s = '\0'; } if (mkpath(tmpbuf) != 0)