static const uint32_t ar[] = {
MAGICNO, VERSIONNO
};
+ int rc = -1; /* assume failure */
if (dbname == NULL)
return -1;
if ((fd = open(dbname, O_WRONLY|O_CREAT|O_TRUNC, 0644)) == -1) {
(void)fprintf(stderr, "%s: Cannot open `%s' (%s)\n",
__progname, dbname, strerror(errno));
- return -1;
+ goto exit;
}
if (write(fd, ar, sizeof(ar)) != sizeof(ar)) {
(void)fprintf(stderr, "%s: error writing `%s' (%s)\n",
__progname, dbname, strerror(errno));
- return -1;
+ goto exit;
}
if (lseek(fd, sizeof(**magicp), SEEK_SET) != sizeof(**magicp)) {
(void)fprintf(stderr, "%s: error seeking `%s' (%s)\n",
__progname, dbname, strerror(errno));
- return -1;
+ goto exit;
}
if (write(fd, *magicp, sizeof(**magicp) * *nmagicp)
!= sizeof(**magicp) * *nmagicp) {
(void)fprintf(stderr, "%s: error writing `%s' (%s)\n",
__progname, dbname, strerror(errno));
- return -1;
+ goto exit;
}
+ rc = 0;
- (void)close(fd);
- return 0;
+exit:
+ if (fd >= 0)
+ (void)close(fd);
+ free(dbname);
+ return rc;
}
/*@=bounds@*/
if (dbname == NULL)
return -1;
- if ((fd = open(dbname, O_RDONLY)) == -1)
+ if ((fd = open(dbname, O_RDONLY)) == -1) {
+ free(dbname);
return -1;
+ }
if (fstat(fd, &st) == -1) {
(void)fprintf(stderr, "%s: Cannot stat `%s' (%s)\n",
(*magicp)++;
if (needsbyteswap)
byteswap(*magicp, *nmagicp);
+ free(dbname);
return 0;
errxit:
+ free(dbname);
if (fd != -1)
(void)close(fd);
/*@-branchstate@*/
break;
case RPMSIGTAG_MD5:
pktlen = 16;
- pkt = xcalloc(1, pktlen);
+ pkt = memset(alloca(pktlen), 0, pktlen);
if (domd5(file, pkt, 0, NULL)
|| !headerAddEntry(sig, sigTag, RPM_BIN_TYPE, pkt, pktlen))
break;