From 249014779de9718f839a7dc1d60bc8a775e541fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20=C3=98yvind=20Karlsen?= Date: Wed, 17 Nov 2010 22:57:52 +0000 Subject: check return value of remaining headerGet() usage --- URPM.xs | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/URPM.xs b/URPM.xs index 9565296..4adf115 100644 --- a/URPM.xs +++ b/URPM.xs @@ -769,29 +769,36 @@ return_files(Header header, int filter_mode) { HE_t he_fmodes = memset(alloca(sizeof(*he_fmodes)), 0, sizeof(*he_fmodes)); he_flags->tag = RPMTAG_FILEFLAGS; + if(headerGet(header, he_flags, 0)) + flags = (rpmsenseFlags*)he_flags->p.ui32p; + he_fmodes->tag = RPMTAG_FILEMODES; - headerGet(header, he_flags, 0); - headerGet(header, he_fmodes, 0); - flags = (rpmsenseFlags*)he_flags->p.ui32p; - fmodes = he_fmodes->p.ui16p; + if(headerGet(header, he_fmodes, 0)) + fmodes = he_fmodes->p.ui16p; } + const char **baseNames = NULL; + const char **dirNames = NULL; + uint32_t *dirIndexes = NULL; + const char **list = NULL; + HE_t he_baseNames = memset(alloca(sizeof(*he_baseNames)), 0, sizeof(*he_baseNames)); HE_t he_dirIndexes = memset(alloca(sizeof(*he_dirIndexes)), 0, sizeof(*he_dirIndexes)); HE_t he_dirNames = memset(alloca(sizeof(*he_dirNames)), 0, sizeof(*he_dirNames)); he_baseNames->tag = RPMTAG_BASENAMES; + if(headerGet(header, he_baseNames, 0)) + baseNames = he_baseNames->p.argv; + he_dirIndexes->tag = RPMTAG_DIRINDEXES; + if(headerGet(header, he_dirIndexes, 0)) + dirNames = he_dirNames->p.argv; + he_dirNames->tag = RPMTAG_DIRNAMES; - headerGet(header, he_baseNames, 0); - headerGet(header, he_dirIndexes, 0); - headerGet(header, he_dirNames, 0); + if(headerGet(header, he_dirNames, 0)) + dirIndexes = he_dirIndexes->p.ui32p; - const char **baseNames = he_baseNames->p.argv; - const char **dirNames = he_dirNames->p.argv; - uint32_t *dirIndexes = he_dirIndexes->p.ui32p; - const char **list = NULL; if (!baseNames || !dirNames || !dirIndexes) { HE_t he_list = memset(alloca(sizeof(*he_list)), 0, sizeof(*he_list)); @@ -1145,8 +1152,8 @@ update_provides_files(URPM__Package pkg, HV *provides) { HE_t he = memset(alloca(sizeof(*he)), 0, sizeof(*he)); he->tag = RPMTAG_OLDFILENAMES; - headerGet(pkg->h, he, 0); - if (list) { + if(headerGet(pkg->h, he, 0)) { + list = he->p.argv; for (he->ix = 0; he->ix < (int)he->c; he->ix++) { len = strlen(list[he->ix]); -- cgit v1.2.1