From 65f3e55d3592da8fb482b5344a28013029199115 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Tue, 10 Mar 2009 10:17:13 +0200 Subject: [PATCH] Don't return data from headerGet() on regionSwab() failure - callers dont expect to free data if headerGet() returns failure, leaking memory --- lib/header.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/header.c b/lib/header.c index 96a6f1c..8cac975 100644 --- a/lib/header.c +++ b/lib/header.c @@ -1183,6 +1183,10 @@ static int copyTdEntry(const indexEntry entry, rpmtd td, headerGetFlags flags) dataStart = (unsigned char *) memcpy(pe + ril, dataStart, rdl); rc = regionSwab(NULL, ril, 0, pe, dataStart, dataStart + rdl, 0); + /* don't return data on failure */ + if (rc < 0) { + td->data = _free(td->data); + } /* XXX 1 on success. */ rc = (rc < 0) ? 0 : 1; } else { -- 2.7.4