Payload compatibility checking fixes.
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 5 Jun 2007 09:43:53 +0000 (12:43 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Tue, 5 Jun 2007 09:43:53 +0000 (12:43 +0300)
Only check for payload compatibility when dealing with packages (and not
eg build headers). Don't crash if no payload format defined in header.

lib/depends.c
lib/package.c

index 1b3c1df..dfffa9a 100644 (file)
@@ -158,8 +158,8 @@ int rpmtsAddInstallElement(rpmts ts, Header h,
     hcolor = hGetColor(h);
     pkgKey = RPMAL_NOMATCH;
 
-    /* Check for supported payload format */
-    if (headerCheckPayload(h) != RPMRC_OK) {
+    /* Check for supported payload format if it's a package */
+    if (key && headerCheckPayload(h) != RPMRC_OK) {
        ec = 1;
        goto exit;
     }
index f235458..db9cf56 100644 (file)
@@ -1081,14 +1081,14 @@ rpmRC headerCheckPayload(Header h) {
        rc = RPMRC_OK;
     } else {
         const char *nevra = hGetNEVRA(h, NULL);
-        if (strncmp(payloadfmt, "drpm", strlen("drpm")) == 0) {
+        if (payloadfmt && strncmp(payloadfmt, "drpm", strlen("drpm")) == 0) {
             rpmMessage(RPMMESS_ERROR,
                      _("%s is a Delta RPM and cannot be directly installed\n"),
                      nevra);
         } else {
             rpmMessage(RPMMESS_ERROR, 
                      _("Unsupported payload (%s) in package %s\n"),
-                     payloadfmt, nevra);
+                     payloadfmt ? payloadfmt : "none", nevra);
         } 
         nevra = _free(nevra);
     }