fix: prevent segfault if malicious server sends 1 GB of data through ftpNLST.
[platform/upstream/rpm.git] / lib / transaction.c
index a93757e..d019de4 100644 (file)
@@ -1209,7 +1209,7 @@ rpmMessage(RPMMESS_DEBUG, _("computing %d file fingerprints\n"), totalFileCount)
            continue;   /* XXX can't happen */
        fc = rpmfiFC(fi);
 
-       (void) rpmswEnter(&ts->op_fingerprint, 0);
+       (void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_FINGERPRINT), 0);
        fpLookupList(fpc, fi->dnl, fi->bnl, fi->dil, fc, fi->fps);
        /*@-branchstate@*/
        fi = rpmfiInit(fi, 0);
@@ -1222,7 +1222,7 @@ rpmMessage(RPMMESS_DEBUG, _("computing %d file fingerprints\n"), totalFileCount)
            /*@=dependenttrans@*/
        }
        /*@=branchstate@*/
-       (void) rpmswExit(&ts->op_fingerprint, fc);
+       (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_FINGERPRINT), fc);
 
     }
     pi = rpmtsiFree(pi);
@@ -1252,7 +1252,7 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
 
        if (fc == 0) continue;
 
-       (void) rpmswEnter(&ts->op_fingerprint, 0);
+       (void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_FINGERPRINT), 0);
        /* Extract file info for all files in this package from the database. */
        matches = xcalloc(fc, sizeof(*matches));
        if (rpmdbFindFpList(rpmtsGetRdb(ts), fi->fps, matches, fc)) {
@@ -1352,7 +1352,7 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
        case TR_REMOVED:
            /*@switchbreak@*/ break;
        }
-       (void) rpmswExit(&ts->op_fingerprint, fc);
+       (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_FINGERPRINT), fc);
     }
     pi = rpmtsiFree(pi);
     ps = rpmpsFree(ps);
@@ -1425,7 +1425,7 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
                        numRemoved, NULL, ts->notifyData));
                progress++;
 
-               (void) rpmswEnter(&ts->op_repackage, 0);
+               (void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_REPACKAGE), 0);
 
        /* XXX TR_REMOVED needs CPIO_MAP_{ABSOLUTE,ADDDOT} CPIO_ALL_HARDLINKS */
                fi->mapflags |= CPIO_MAP_ABSOLUTE;
@@ -1438,7 +1438,7 @@ rpmMessage(RPMMESS_DEBUG, _("computing file dispositions\n"));
                fi->mapflags &= ~CPIO_MAP_ADDDOT;
                fi->mapflags &= ~CPIO_ALL_HARDLINKS;
 
-               (void) rpmswExit(&ts->op_repackage, 0);
+               (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_REPACKAGE), 0);
 
                /*@switchbreak@*/ break;
            }
@@ -1473,7 +1473,7 @@ assert(psm != NULL);
 
        switch (rpmteType(p)) {
        case TR_ADDED:
-           (void) rpmswEnter(&ts->op_install, 0);
+           (void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_INSTALL), 0);
 
            pkgKey = rpmteAddedKey(p);
 
@@ -1570,12 +1570,12 @@ assert(psm != NULL);
 
            p->h = headerFree(p->h);
 
-           (void) rpmswExit(&ts->op_install, 0);
+           (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_INSTALL), 0);
 
            /*@switchbreak@*/ break;
 
        case TR_REMOVED:
-           (void) rpmswEnter(&ts->op_erase, 0);
+           (void) rpmswEnter(rpmtsOp(ts, RPMTS_OP_ERASE), 0);
 
            rpmMessage(RPMMESS_DEBUG, "========== --- %s\n", rpmteNEVR(p));
            /*
@@ -1587,7 +1587,7 @@ assert(psm != NULL);
                    ourrc++;
            }
 
-           (void) rpmswExit(&ts->op_erase, 0);
+           (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_ERASE), 0);
 
            /*@switchbreak@*/ break;
        }