{
int scareMem = 0;
rpmfi fi = NULL;
+ size_t tb = 2 * BUFSIZ;
+ size_t sb;
char * t, * te;
char * prefix = NULL;
int rc = 0; /* XXX FIXME: need real return code */
int i;
- te = t = xmalloc(BUFSIZ);
+ te = t = xmalloc(tb);
/*@-boundswrite@*/
*te = '\0';
/*@=boundswrite@*/
const char * str = queryHeader(h, qva->qva_queryFormat);
/*@-branchstate@*/
if (str) {
- size_t tb = (te - t);
- size_t sb = strlen(str);
+ size_t tx = (te - t);
- if (sb >= (BUFSIZ - tb)) {
- t = xrealloc(t, BUFSIZ+sb);
- te = t + tb;
+ sb = strlen(str);
+ if (sb) {
+ tb += sb;
+ t = xrealloc(t, tb);
+ te = t + tx;
}
/*@-boundswrite@*/
/*@-usereleased@*/
if ((qva->qva_fflags & RPMFILE_GHOST) && (fflags & RPMFILE_GHOST))
continue;
+ /* Insure space for header derived data */
+ sb = strlen(fn) + strlen(fmd5) + strlen(fuser) + strlen(fgroup) + strlen(flink);
+ if ((sb + BUFSIZ) > tb) {
+ size_t tx = (te - t);
+ tb += sb + BUFSIZ;
+ t = xrealloc(t, tb);
+ te = t + tx;
+ }
+
/*@-boundswrite@*/
if (!rpmIsVerbose() && prefix)
te = stpcpy(te, prefix);