RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/build/ files.c pack.c parsePrep.c rpm/rpmd...

From: Jeff Johnson <jbj@rpm5.org>
Date: Tue 27 Nov 2007 - 03:29:27 CET
Message-Id: <20071127022927.CB43A348465@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   27-Nov-2007 03:29:27
  Branch: HEAD                             Handle: 2007112702292601

  Modified files:
    rpm                     CHANGES
    rpm/build               files.c pack.c parsePrep.c
    rpm/rpmdb               header.c legacy.c

  Log:
    - rpmbuild: plug some memory leaks.
    - fix: return 0, not -1, with unsigned changes as error.

  Summary:
    Revision    Changes     Path
    1.1893      +2  -0      rpm/CHANGES
    1.298       +3  -1      rpm/build/files.c
    2.258       +15 -5      rpm/build/pack.c
    2.95        +6  -3      rpm/build/parsePrep.c
    1.140       +12 -12     rpm/rpmdb/header.c
    1.37        +3  -3      rpm/rpmdb/legacy.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1892 -r1.1893 CHANGES
  --- rpm/CHANGES	26 Nov 2007 06:52:52 -0000	1.1892
  +++ rpm/CHANGES	27 Nov 2007 02:29:26 -0000	1.1893
  @@ -1,4 +1,6 @@
   5.0a2 -> 5.0a3:
  +    - jbj: rpmbuild: plug some memory leaks.
  +    - jbj: fix: return 0, not -1, with unsigned changes as error.
       - jbj: add HEADERGET_NOEXTENSION disabler, kill off headerGetEntry.
       - jbj: 1 down, 2 to go, to get rid of headerGetEntry.
       - jbj: limit headerGetEntry usage to -lrpmdb only.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/files.c
  ============================================================================
  $ cvs diff -u -r1.297 -r1.298 files.c
  --- rpm/build/files.c	26 Nov 2007 06:15:34 -0000	1.297
  +++ rpm/build/files.c	27 Nov 2007 02:29:27 -0000	1.298
  @@ -1025,8 +1025,10 @@
   		const char *ddir, *fmt, *errstr;
   		if (!oneshot) {
   		    _docdir_fmt = rpmExpand("%{?_docdir_fmt}", NULL);
  -		    if (!_docdir_fmt || !*_docdir_fmt)
  +		    if (!_docdir_fmt || !*_docdir_fmt) {
  +			_docdir_fmt = _free(_docdir_fmt);
   			_docdir_fmt = "%{NAME}-%{VERSION}";
  +		    }
   		    oneshot = 1;
   		}
   		fmt = headerSprintf(pkg->header, _docdir_fmt, NULL, rpmHeaderFormats, &errstr);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/pack.c
  ============================================================================
  $ cvs diff -u -r2.257 -r2.258 pack.c
  --- rpm/build/pack.c	24 Nov 2007 23:15:31 -0000	2.257
  +++ rpm/build/pack.c	27 Nov 2007 02:29:27 -0000	2.258
  @@ -43,12 +43,16 @@
   	/*@modifies spec->sourceRpmName @*/
   {
       if (spec->sourceRpmName == NULL) {
  -	const char *name, *version, *release;
  +	const char *N, *V, *R;
   	char fileName[BUFSIZ];
   
  -	(void) headerNEVRA(spec->packages->header, &name, NULL, &version, &release, NULL);
  -	sprintf(fileName, "%s-%s-%s.%ssrc.rpm", name, version, release,
  +	(void) headerNEVRA(spec->packages->header, &N, NULL, &V, &R, NULL);
  +	snprintf(fileName, sizeof(fileName), "%s-%s-%s.%ssrc.rpm", N, V, R,
   	    spec->noSource ? "no" : "");
  +	fileName[sizeof(fileName)-1] = '\0';
  +	N = _free(N);
  +	V = _free(V);
  +	R = _free(R);
   	spec->sourceRpmName = xstrdup(fileName);
       }
   
  @@ -495,6 +499,8 @@
   	p += strlen(p);
       }
       (void) stpcpy( stpcpy( stpcpy(p, V) , "-") , R);
  +    V = _free(V);
  +    R = _free(R);
   
       /*
        * Rpm prior to 3.0.3 does not have versioned provides.
  @@ -584,6 +590,7 @@
   	xx = headerPut(h, he, 0);
   	he->append = 0;
       }
  +    N = _free(N);
   }
   
   /*@-boundswrite@*/
  @@ -687,8 +694,8 @@
   
       /* Create and add the cookie */
       if (cookie) {
  -	sprintf(buf, "%s %d", buildHost(), (int) (*getBuildTime()));
  -	*cookie = xstrdup(buf);
  +	sprintf(buf, "%s %u", buildHost(), (unsigned) (*getBuildTime()));
  +	*cookie = xstrdup(buf);		/* XXX memory leak */
   	he->tag = RPMTAG_COOKIE;
   	he->t = RPM_STRING_TYPE;
   	he->p.str = *cookie;
  @@ -813,6 +820,9 @@
   	    (void) headerNEVRA(h, &N, NULL, &V, &R, NULL);
   	    sprintf(buf, "%s-%s-%s", N, V, R);
   	    rc = rpmpkgWrite(item, fd, l, &msg);
  +	    N = _free(N);
  +	    V = _free(V);
  +	    R = _free(R);
   	}
   
   	if (rc != RPMRC_OK) {
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/build/parsePrep.c
  ============================================================================
  $ cvs diff -u -r2.94 -r2.95 parsePrep.c
  --- rpm/build/parsePrep.c	26 Nov 2007 05:16:49 -0000	2.94
  +++ rpm/build/parsePrep.c	27 Nov 2007 02:29:27 -0000	2.95
  @@ -383,9 +383,12 @@
       if (dirName) {
   	spec->buildSubdir = xstrdup(dirName);
       } else {
  -	const char *name, *version;
  -	(void) headerNEVRA(spec->packages->header, &name, NULL, &version, NULL, NULL);
  -	sprintf(buf, "%s-%s", name, version);
  +	const char *N, *V;
  +	(void) headerNEVRA(spec->packages->header, &N, NULL, &V, NULL, NULL);
  +	snprintf(buf, sizeof(buf), "%s-%s", N, V);
  +	buf[sizeof(buf)-1] = '\0';
  +	N = _free(N);
  +	V = _free(V);
   	spec->buildSubdir = xstrdup(buf);
       }
       addMacro(spec->macros, "buildsubdir", NULL, spec->buildSubdir, RMIL_SPEC);
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.139 -r1.140 header.c
  --- rpm/rpmdb/header.c	26 Nov 2007 21:05:57 -0000	1.139
  +++ rpm/rpmdb/header.c	27 Nov 2007 02:29:27 -0000	1.140
  @@ -334,7 +334,7 @@
       switch (type) {
       case RPM_STRING_TYPE:
   	if (count != 1)
  -	    return -1;
  +	    return 0;
   	while (*s++ != '\0') {
   	    if (se && s > se)
   		return 0;
  @@ -349,7 +349,7 @@
   	if (onDisk) {
   	    while (count--) {
   		length++;       /* count nul terminator too */
  -               while (*s++ != '\0') {
  +		while (*s++ != '\0') {
   		    if (se && s > se)
   			return 0;
   		    length++;
  @@ -429,17 +429,17 @@
   assert(ie.info.offset >= 0);	/* XXX insurance */
   
   	if (hdrchkType(ie.info.type))
  -	    return -1;
  +	    return 0;
   	if (hdrchkData(ie.info.count))
  -	    return -1;
  +	    return 0;
   	if (hdrchkData(ie.info.offset))
  -	    return -1;
  +	    return 0;
   	if (hdrchkAlign(ie.info.type, ie.info.offset))
  -	    return -1;
  +	    return 0;
   
   	ie.data = t = dataStart + ie.info.offset;
   	if (dataEnd && t >= dataEnd)
  -	    return -1;
  +	    return 0;
   
   	p.ptr = ie.data;
   	pend.ui8p = (uint8_t *) dataEnd;
  @@ -447,7 +447,7 @@
   	ie.length = dataLength(ie.info.type, &p, ie.info.count, 1, &pend);
   /*@=nullstate@*/
   	if (ie.length == 0 || hdrchkData(ie.length))
  -	    return -1;
  +	    return 0;
   
   	ie.rdlen = 0;
   
  @@ -491,7 +491,7 @@
   	    uint32_t b[2];
   	    for (; ie.info.count > 0; ie.info.count--, it += 1) {
   		if (dataEnd && ((unsigned char *)it) >= dataEnd)
  -		    return -1;
  +		    return 0;
   		b[1] = (uint32_t) htonl(((uint32_t *)it)[0]);
   		b[0] = (uint32_t) htonl(((uint32_t *)it)[1]);
   		if (b[1] != ((uint32_t *)it)[0])
  @@ -503,7 +503,7 @@
   	{   uint32_t * it = (uint32_t *)t;
   	    for (; ie.info.count > 0; ie.info.count--, it += 1) {
   		if (dataEnd && ((unsigned char *)it) >= dataEnd)
  -		    return -1;
  +		    return 0;
   		*it = (uint32_t) htonl(*it);
   	    }
   	    t = (unsigned char *) it;
  @@ -512,7 +512,7 @@
   	{   uint16_t * it = (uint16_t *) t;
   	    for (; ie.info.count > 0; ie.info.count--, it += 1) {
   		if (dataEnd && ((unsigned char *)it) >= dataEnd)
  -		    return -1;
  +		    return 0;
   		*it = (uint16_t) htons(*it);
   	    }
   	    t = (unsigned char *) it;
  @@ -523,7 +523,7 @@
   	}
   
   	dl += ie.length;
  -	if (dataEnd && (dataStart + dl) > dataEnd) return -1;
  +	if (dataEnd && (dataStart + dl) > dataEnd) return 0;
   	tl += tdel;
   	ieprev = ie;	/* structure assignment */
   
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/legacy.c
  ============================================================================
  $ cvs diff -u -r1.36 -r1.37 legacy.c
  --- rpm/rpmdb/legacy.c	14 Nov 2007 21:13:18 -0000	1.36
  +++ rpm/rpmdb/legacy.c	27 Nov 2007 02:29:27 -0000	1.37
  @@ -49,12 +49,12 @@
   {
   /*@only@*/
       static const char * cmd = NULL;
  -    static int initted = 0;
  +    static int oneshot = 0;
       int fdno;
   
  -    if (!initted) {
  +    if (!oneshot) {
   	cmd = rpmExpand("%{?__prelink_undo_cmd}", NULL);
  -	initted++;
  +	oneshot++;
       }
   
       if (pidp) *pidp = 0;
  @@ .
Received on Tue Nov 27 03:29:27 2007
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.