Package: libpaper Version: 1.1.24+nmu4 Hi,
I ran coverity scan for libpaper package and I found following issue, which I
found as important,
because it is in a function, which is in shared library and can be linked to
other projects:
libpaper-1.1.24+nmu4/lib/paper.c:197: *alloc_fn*: Storage is returned from
allocation function "realloc".
libpaper-1.1.24+nmu4/lib/paper.c:197: *var_assign*: Assigning: "newpaper" =
storage returned from "realloc(papername, (m *= 2U) * 1UL)".
libpaper-1.1.24+nmu4/lib/paper.c:204: *var_assign*: Assigning: "papername" =
"newpaper".
libpaper-1.1.24+nmu4/lib/paper.c:205: *leaked_storage*: Variable "newpaper"
going out of scope leaks the storage it points to.
libpaper-1.1.24+nmu4/lib/paper.c:213: *noescape*: Resource "papername" is not
freed or pointed-to in "strlen".
libpaper-1.1.24+nmu4/lib/paper.c:214: *leaked_storage*: Variable "papername"
going out of scope leaks the storage it points to.
# 212|
# 213| paperstr = malloc((strlen(papername) + 1) *
sizeof(char));
# 214|-> if (! paperstr) return 0;
# 215|
# 216| strcpy(paperstr, papername);
I propose the following patch:
diff --git a/lib/paper.c b/lib/paper.c
index 57db599..8817aea 100644
--- a/lib/paper.c
+++ b/lib/paper.c
@@ -211,7 +211,10 @@ PAPERSIZEVAR, fall-back to the old behaviour.
fclose(ps);
paperstr = malloc((strlen(papername) + 1) * sizeof(char));
- if (! paperstr) return 0;
+ if (! paperstr) {
+ free(papername);
+ return 0;
+ }
strcpy(paperstr, papername);
free(papername);
I am using Fedora's version of libpaper-1.1.24+nmu4 (but source code is from
debian),
but it seems nmu5, which is stable, is still affected.
--
Zdenek Dohnal
Associate Software Engineer
Red Hat Czech - Brno TPB-C
signature.asc
Description: OpenPGP digital signature

