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);
openSUSE Build Service is sponsored by