File formatbugs.diff of Package rpm
--- lib/formats.c.orig 2022-09-02 11:54:45.406870536 +0000
+++ lib/formats.c 2022-09-02 11:57:24.958600597 +0000
@@ -44,9 +44,12 @@ static char * stringFormat(rpmtd td)
case RPM_NUMERIC_CLASS:
rasprintf(&val, "%" PRIu64, rpmtdGetNumber(td));
break;
- case RPM_STRING_CLASS:
- val = xstrdup(rpmtdGetString(td));
+ case RPM_STRING_CLASS: {
+ const char *str = rpmtdGetString(td);
+ if (str)
+ val = xstrdup(str);
break;
+ }
case RPM_BINARY_CLASS:
val = pgpHexStr(td->data, td->count);
break;
--- lib/headerfmt.c.orig 2022-09-02 11:54:57.482850112 +0000
+++ lib/headerfmt.c 2022-09-02 11:58:22.366503466 +0000
@@ -624,7 +624,7 @@ static char * formatValue(headerSprintfA
char * t, * te;
rpmtd td;
- if ((td = getData(hsa, tag->tag))) {
+ if ((td = getData(hsa, tag->tag)) && td->count > element) {
td->ix = element; /* Ick, use iterators instead */
val = tag->fmt(td);
} else {
--- lib/tagexts.c.orig 2022-09-02 11:54:38.926881502 +0000
+++ lib/tagexts.c 2022-09-02 11:56:18.090713730 +0000
@@ -799,7 +799,7 @@ typedef rpmFlags nevraFlags;
static int getNEVRA(Header h, rpmtd td, nevraFlags flags)
{
const char *val = NULL;
- char *res = NULL;
+ char *res = xstrdup("");
if ((flags & NEVRA_NAME)) {
val = headerGetString(h, RPMTAG_NAME);