[Rpm-maint] [PATCH 2/3] General fixes

ext-tero.aho at nokia.com ext-tero.aho at nokia.com
Fri Jan 21 09:38:26 UTC 2011


- Fixing uninitialized variable in fsm.c.
- Always null terminating base64 decoded data. This doesn't hurt
  since the outlen doesn't include the null termination, but can be
  useful for the caller if decoded data is known to be a string.
---
 lib/fsm.c      |    2 +-
 rpmio/base64.c |    4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/lib/fsm.c b/lib/fsm.c
index 6939de4..2377135 100644
--- a/lib/fsm.c
+++ b/lib/fsm.c
@@ -581,7 +581,7 @@ static int fsmMkdirs(FSM_t fsm);

 static int fsmCreate(FSM_t fsm)
 {
-    int rc;
+    int rc = 0;
     fsm->path = _free(fsm->path);
     fsm->opath = _free(fsm->opath);
     fsm->dnlx = _free(fsm->dnlx);
diff --git a/rpmio/base64.c b/rpmio/base64.c
index 6b006e1..6a21a4d 100644
--- a/rpmio/base64.c
+++ b/rpmio/base64.c
@@ -165,6 +165,7 @@ int b64decode(const char *in, void **out, size_t *outlen)
 {
     size_t outcnt = 0;
     const char *inptr = in;
+    char *outptr;

     *out = NULL;

@@ -189,12 +190,13 @@ int b64decode(const char *in, void **out, size_t *outlen)

     outcnt = (outcnt / 4) * 3;

-    *out = malloc(outcnt + 1); /* base64_decode_block can write one extra character */
+    *out = outptr = malloc(outcnt + 2); /* base64_decode_block can write one extra character, reserve one more for null termination */

     if (*out == NULL)
         return 4;

     *outlen = base64_decode_block(in, inptr - in, *out);
+    outptr[*outlen] = '\0'; /* null terminate */

     return 0;
 }
--
1.7.2.3


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rpm.org/pipermail/rpm-maint/attachments/20110121/33e312be/attachment.html>


More information about the Rpm-maint mailing list