diff -uNr net-snmp-5.7.3.orig/agent/mibgroup/host/data_access/swinst_rpm.c net-snmp-5.7.3/agent/mibgroup/host/data_access/swinst_rpm.c --- net-snmp-5.7.3.orig/agent/mibgroup/host/data_access/swinst_rpm.c 2014-12-08 21:23:22.000000000 +0100 +++ net-snmp-5.7.3/agent/mibgroup/host/data_access/swinst_rpm.c 2017-08-11 00:16:35.232470439 +0200 @@ -96,8 +96,7 @@ rpmdbMatchIterator mi; Header h; - char *n, *v, *r, *g; - int32_t *t; + const char *n, *v, *r, *g; time_t install_time; size_t date_len; int i = 1; @@ -119,11 +118,11 @@ CONTAINER_INSERT(container, entry); h = headerLink( h ); - headerGetEntry( h, RPMTAG_NAME, NULL, (void**)&n, NULL); - headerGetEntry( h, RPMTAG_VERSION, NULL, (void**)&v, NULL); - headerGetEntry( h, RPMTAG_RELEASE, NULL, (void**)&r, NULL); - headerGetEntry( h, RPMTAG_GROUP, NULL, (void**)&g, NULL); - headerGetEntry( h, RPMTAG_INSTALLTIME, NULL, (void**)&t, NULL); + n = headerGetString( h, RPMTAG_NAME); + v = headerGetString( h, RPMTAG_VERSION); + r = headerGetString( h, RPMTAG_RELEASE); + g = headerGetString( h, RPMTAG_GROUP); + install_time = headerGetNumber( h, RPMTAG_INSTALLTIME); entry->swName_len = snprintf( entry->swName, sizeof(entry->swName), "%s-%s-%s", n, v, r); @@ -133,7 +132,6 @@ ? 2 /* operatingSystem */ : 4; /* application */ - install_time = *t; dt = date_n_time( &install_time, &date_len ); if (date_len != 8 && date_len != 11) { snmp_log(LOG_ERR, "Bogus length from date_n_time for %s", entry->swName); diff -uNr net-snmp-5.7.3.orig/agent/mibgroup/host/hr_swinst.c net-snmp-5.7.3/agent/mibgroup/host/hr_swinst.c --- net-snmp-5.7.3.orig/agent/mibgroup/host/hr_swinst.c 2014-12-08 21:23:22.000000000 +0100 +++ net-snmp-5.7.3/agent/mibgroup/host/hr_swinst.c 2017-08-11 00:17:07.488544492 +0200 @@ -484,9 +484,9 @@ } #else # ifdef HAVE_LIBRPM - char *rpm_groups; - if ( headerGetEntry(swi->swi_h, RPMTAG_GROUP, NULL, (void **) &rpm_groups, NULL) ) { - if ( strstr(rpm_groups, "System Environment") != NULL ) + const char *rpm_group = headerGetString(swi->swi_h, RPMTAG_GROUP); + if ( NULL != rpm_group ) { + if ( strstr(rpm_group, "System Environment") != NULL ) long_return = 2; /* operatingSystem */ else long_return = 4; /* applcation */ @@ -503,9 +503,8 @@ case HRSWINST_DATE: { #ifdef HAVE_LIBRPM - int32_t *rpm_data; - if ( headerGetEntry(swi->swi_h, RPMTAG_INSTALLTIME, NULL, (void **) &rpm_data, NULL) ) { - time_t installTime = *rpm_data; + time_t installTime = headerGetNumber(swi->swi_h, RPMTAG_INSTALLTIME); + if ( 0 != installTime) { ret = date_n_time(&installTime, var_len); } else { ret = date_n_time(NULL, var_len); @@ -665,7 +664,7 @@ if (1 <= ix && ix <= swi->swi_nrec && ix != swi->swi_prevx) { int offset; Header h; - char *n, *v, *r; + const char *n, *v, *r; offset = swi->swi_recs[ix - 1]; @@ -690,11 +689,9 @@ swi->swi_h = h; swi->swi_prevx = ix; - headerGetEntry(swi->swi_h, RPMTAG_NAME, NULL, (void **) &n, NULL); - headerGetEntry(swi->swi_h, RPMTAG_VERSION, NULL, (void **) &v, - NULL); - headerGetEntry(swi->swi_h, RPMTAG_RELEASE, NULL, (void **) &r, - NULL); + n = headerGetString(swi->swi_h, RPMTAG_NAME); + v = headerGetString(swi->swi_h, RPMTAG_VERSION); + r = headerGetString(swi->swi_h, RPMTAG_RELEASE); snprintf(swi->swi_name, sizeof(swi->swi_name), "%s-%s-%s", n, v, r); swi->swi_name[ sizeof(swi->swi_name)-1 ] = 0; }