diff options
author | Garrett D'Amore <garrett@nexenta.com> | 2010-11-15 20:03:27 -0800 |
---|---|---|
committer | Garrett D'Amore <garrett@nexenta.com> | 2010-11-15 20:03:27 -0800 |
commit | 4656d4747c8743290bfbe910c64cd75eb4e4af8d (patch) | |
tree | 241d8b3f0b8796e33937c6a27c670eba002f8f04 /usr/src/lib/libpkg/common | |
parent | 60bec29ea42d65ac648c69b0fb189273e286ca57 (diff) | |
download | illumos-gate-4656d4747c8743290bfbe910c64cd75eb4e4af8d.tar.gz |
420 remove patch (sparse package) support from svr4 pkg
421 libpkg and libadm need to be lint clean
Reviewed by: gwr@nexenta.com
Reviewed by: peter.tribble@gmail.com
Approved by: gwr@nexenta.com
Diffstat (limited to 'usr/src/lib/libpkg/common')
24 files changed, 249 insertions, 935 deletions
diff --git a/usr/src/lib/libpkg/common/ckparam.c b/usr/src/lib/libpkg/common/ckparam.c index 68284e6012..47beb1c6be 100644 --- a/usr/src/lib/libpkg/common/ckparam.c +++ b/usr/src/lib/libpkg/common/ckparam.c @@ -162,7 +162,7 @@ static int too_long(char *param, char *pt, int len) { if (strlen(pt) > (size_t)len) { - progerr(pkg_gt(ERR_LEN), pt); + progerr(pkg_gt(ERR_LEN), param); return (1); } return (0); diff --git a/usr/src/lib/libpkg/common/dstream.c b/usr/src/lib/libpkg/common/dstream.c index 68ff540393..38ca430614 100644 --- a/usr/src/lib/libpkg/common/dstream.c +++ b/usr/src/lib/libpkg/common/dstream.c @@ -42,18 +42,10 @@ #include <sys/stat.h> #include <sys/statvfs.h> #include <fcntl.h> -#ifdef u3b2 -#include <sys/sys3b.h> -#endif /* u3b2 */ #include <openssl/err.h> #include "pkglib.h" #include "pkglibmsgs.h" #include "pkglocale.h" -#ifdef u3b2 -static -struct stat orig_st_buf; /* Stat structure of original file (3B2/CTC) */ -static char ds_ctcflg; -#endif /* u3b2 */ /* libadm.a */ extern char *devattr(char *device, char *attribute); @@ -203,7 +195,7 @@ ds_readbuf(char *device) (void) ds_close(0); return (0); } - memcpy(ds_header, buf, BLK_SIZE); + (void) memcpy(ds_header, buf, BLK_SIZE); ds_headsize = BLK_SIZE; if (ds_ginit(device) < 0) { @@ -232,7 +224,7 @@ ds_volsum(struct dstoc *toc) char volnos[128], tmpvol[128]; if (toc->volnos[0]) { int index, sum; - sscanf(toc->volnos, "%d %[ 0-9]", &curpartcnt, volnos); + (void) sscanf(toc->volnos, "%d %[ 0-9]", &curpartcnt, volnos); volcnt = 0; sum = curpartcnt; while (sum < toc->nparts && sscanf(volnos, "%d %[ 0-9]", @@ -254,7 +246,8 @@ static void ds_pkginit(void) { if (ds_toc->volnos[0]) - sscanf(ds_toc->volnos, "%d %[ 0-9]", &ds_curpartcnt, ds_volnos); + (void) sscanf(ds_toc->volnos, "%d %[ 0-9]", &ds_curpartcnt, + ds_volnos); else ds_curpartcnt = -1; } @@ -263,9 +256,9 @@ ds_pkginit(void) * functions to pass current package info to exec'ed program */ void -ds_putinfo(char *buf) +ds_putinfo(char *buf, size_t sz) { - (void) sprintf(buf, "%d %d %d %d %d %d %d %d %d %d %s", + (void) snprintf(buf, sz, "%d %d %d %d %d %d %d %d %d %d %s", ds_fd, ds_realfd, ds_volcnt, ds_volno, ds_totread, ds_volpart, ds_skippart, ds_bufsize, ds_toc->nparts, ds_toc->maxsiz, ds_toc->volnos); @@ -435,7 +428,7 @@ ds_init(char *device, char **pkg, char *norewind) (void) ds_close(0); return (1); } - memcpy(ds_header_raw, ds_header, header_size); + (void) memcpy(ds_header_raw, ds_header, header_size); /* read datastream table of contents */ ds_head = tail = (struct dstoc *)0; @@ -454,6 +447,7 @@ ds_init(char *device, char **pkg, char *norewind) (void) free(ds_header); return (-1); } + /* LINTED E_SEC_SCANF_UNBOUNDED_COPY */ if (sscanf(line, "%s %d %d %[ 0-9]", toc_pt->pkg, &toc_pt->nparts, &toc_pt->maxsiz, toc_pt->volnos) < 3) { progerr(pkg_gt(ERR_UNPACK)); @@ -476,8 +470,8 @@ ds_init(char *device, char **pkg, char *norewind) (void) free(ds_header); return (-1); } - sighold(SIGINT); - sigrelse(SIGINT); + (void) sighold(SIGINT); + (void) sigrelse(SIGINT); if (!ds_head) { progerr(pkg_gt(ERR_UNPACK)); logerr(pkg_gt(MSG_EMPTY)); @@ -485,25 +479,22 @@ ds_init(char *device, char **pkg, char *norewind) return (-1); } /* this could break, thanks to cpio command limit */ -#ifndef SUNOS41 - (void) sprintf(cmd, "%s -icdumD -C %d", CPIOPROC, (int)BLK_SIZE); -#else - (void) sprintf(cmd, "%s -icdum -C %d", CPIOPROC, (int)BLK_SIZE); -#endif + (void) snprintf(cmd, sizeof (cmd), "%s -icdumD -C %d", + CPIOPROC, (int)BLK_SIZE); n = 0; for (i = 0; pkg[i]; i++) { if (strcmp(pkg[i], "all") == 0) continue; if (n == 0) { - strcat(cmd, " "); + (void) strlcat(cmd, " ", CMDSIZ); n = 1; } - strlcat(cmd, pkg[i], CMDSIZ); - strlcat(cmd, "'/*' ", CMDSIZ); + (void) strlcat(cmd, pkg[i], CMDSIZ); + (void) strlcat(cmd, "'/*' ", CMDSIZ); /* extract signature too, if present. */ - strlcat(cmd, SIGNATURE_FILENAME, CMDSIZ); - strlcat(cmd, " ", CMDSIZ); + (void) strlcat(cmd, SIGNATURE_FILENAME, CMDSIZ); + (void) strlcat(cmd, " ", CMDSIZ); } /* @@ -608,13 +599,9 @@ ds_getpkg(char *device, int n, char *dstdir) logerr(pkg_gt(MSG_STATFS), errno); return (-1); } -#ifdef SUNOS41 - free_blocks = svfsb.f_bfree * howmany(svfsb.f_bsize, DEV_BSIZE); -#else /* !SUNOS41 */ free_blocks = (((long)svfsb.f_frsize > 0) ? - howmany(svfsb.f_frsize, DEV_BSIZE) : - howmany(svfsb.f_bsize, DEV_BSIZE)) * svfsb.f_bfree; -#endif /* SUNOS41 */ + howmany(svfsb.f_frsize, DEV_BSIZE) : + howmany(svfsb.f_bsize, DEV_BSIZE)) * svfsb.f_bfree; if ((ds_maxsiz + 50) > free_blocks) { progerr(pkg_gt(ERR_UNPACK)); logerr(pkg_gt(MSG_NOSPACE), ds_maxsiz+50, free_blocks); @@ -659,12 +646,8 @@ ds_skip(char *device, int nskip) while (nskip--) { /* skip this one */ -#ifndef SUNOS41 - (void) sprintf(cmd, "%s -ictD -C %d > /dev/null", -#else - (void) sprintf(cmd, "%s -ict -C %d > /dev/null", -#endif - CPIOPROC, (int)BLK_SIZE); + (void) snprintf(cmd, sizeof (cmd), + "%s -ictD -C %d > /dev/null", CPIOPROC, (int)BLK_SIZE); if (n = esystem(cmd, ds_fd, -1)) { rpterr(); progerr(pkg_gt(ERR_UNPACK)); @@ -706,11 +689,7 @@ ds_next(char *device, char *instdir) (void) strcpy(ds_volnos, tmpvol); ds_curpartcnt += index; } -#ifndef SUNOS41 - (void) sprintf(cmd, "%s -icdumD -C %d", -#else - (void) sprintf(cmd, "%s -icdum -C %d", -#endif + (void) snprintf(cmd, sizeof (cmd), "%s -icdumD -C %d", CPIOPROC, (int)BLK_SIZE); if (n = esystem(cmd, ds_fd, -1)) { rpterr(); @@ -794,7 +773,7 @@ BIO_ds_dump_header(PKG_ERR *err, BIO *bio) char zeros[BLK_SIZE]; - memset(zeros, 0, BLK_SIZE); + (void) memset(zeros, 0, BLK_SIZE); if (BIO_write(bio, ds_header_raw, ds_headsize) != ds_headsize) { pkgerr_add(err, PKGERR_WRITE, ERR_WRITE, "bio", @@ -807,32 +786,12 @@ BIO_ds_dump_header(PKG_ERR *err, BIO *bio) /* * ds_ginit: Determine the device being accessed, set the buffer size, - * and perform any device specific initialization. For the 3B2, - * a device with major number of 17 (0x11) is an internal hard disk, - * unless the minor number is 128 (0x80) in which case it is an internal - * floppy disk. Otherwise, get the system configuration - * table and check it by comparing slot numbers to major numbers. - * For the special case of the 3B2 CTC several unusual things must be done. - * To enable - * streaming mode on the CTC, the file descriptor must be closed, re-opened - * (with O_RDWR and O_CTSPECIAL flags set), the STREAMON ioctl(2) command - * issued, and the file descriptor re-re-opened either read-only or write_only. + * and perform any device specific initialization. */ int ds_ginit(char *device) { -#ifdef u3b2 - major_t maj; - minor_t min; - int nflag, i, count, size; - struct s3bconf *buffer; - struct s3bc *table; - struct stat st_buf; - int devtype; - char buf[BLK_SIZE]; - int fd2, fd; -#endif /* u3b2 */ int oflag; char *pbufsize, cmd[CMDSIZ]; int fd2, fd; @@ -843,104 +802,7 @@ ds_ginit(char *device) } else ds_bufsize = BLK_SIZE; oflag = fcntl(ds_fd, F_GETFL, 0); -#ifdef u3b2 - devtype = G_NO_DEV; - if (fstat(ds_fd, &st_buf) == -1) - return (-1); - if (!S_ISCHR(st_buf.st_mode) && !S_ISBLK(st_buf.st_mode)) - goto lab; - - /* - * We'll have to add a remote attribute to stat but this should - * work for now. - */ - else if (st_buf.st_dev & 0x8000) /* if remote rdev */ - goto lab; - - maj = major(st_buf.st_rdev); - min = minor(st_buf.st_rdev); - if (maj == 0x11) { /* internal hard or floppy disk */ - if (min & 0x80) - devtype = G_3B2_FD; /* internal floppy disk */ - else - devtype = G_3B2_HD; /* internal hard disk */ - } else { - if (sys3b(S3BCONF, (struct s3bconf *)&count, sizeof (count)) == - -1) - return (-1); - size = sizeof (int) + (count * sizeof (struct s3bconf)); - buffer = (struct s3bconf *)malloc((unsigned)size); - if (sys3b(S3BCONF, buffer, size) == -1) - return (-1); - table = (struct s3bc *)((char *)buffer + sizeof (int)); - for (i = 0; i < count; i++) { - if (maj == (int)table->board) { - if (strncmp(table->name, "CTC", 3) == 0) { - devtype = G_3B2_CTC; - break; - } else if (strncmp(table->name, "TAPE", 4) - == 0) { - devtype = G_TAPE; - break; - } - /* other possible devices can go here */ - } - table++; - } - } - switch (devtype) { - case G_3B2_CTC: /* do special CTC initialization */ - ds_bufsize = pbufsize ? ds_bufsize : 15872; - if (fstat(ds_fd, &orig_st_buf) < 0) { - ds_bufsize = -1; - break; - } - nflag = (O_RDWR | O_CTSPECIAL); - (void) close(ds_fd); - if ((ds_fd = open(device, nflag, 0666)) != -1) { - if (ioctl(ds_fd, STREAMON) != -1) { - (void) close(ds_fd); - nflag = (oflag == O_WRONLY) ? - O_WRONLY : O_RDONLY; - if ((ds_fd = - open(device, nflag, 0666)) == -1) { - rpterr(); - progerr( - pkg_gt(ERR_TRANSFER)); - logerr(pkg_gt(MSG_OPEN), - device, errno); - return (-1); - } - ds_bufsize = 15872; - } - } else - ds_bufsize = -1; - if (oflag == O_RDONLY && ds_header && ds_totread == 0) - /* Have already read in first block of header */ - read(ds_fd, buf, BLK_SIZE); - ds_ctcflg = 1; - break; - case G_NO_DEV: - case G_3B2_HD: - case G_3B2_FD: - case G_TAPE: - case G_SCSI_HD: /* not developed yet */ - case G_SCSI_FD: - case G_SCSI_9T: - case G_SCSI_Q24: - case G_SCSI_Q120: - case G_386_HD: - case G_386_FD: - case G_386_Q24: - ds_bufsize = pbufsize ? ds_bufsize : BLK_SIZE; - break; - default: - ds_bufsize = -1; - errno = ENODEV; - } /* devtype */ -lab: -#endif /* u3b2 */ if (ds_bufsize > BLK_SIZE) { if (oflag & O_WRONLY) fd = 1; @@ -948,20 +810,20 @@ lab: fd = 0; fd2 = fcntl(fd, F_DUPFD, fd); (void) close(fd); - fcntl(ds_fd, F_DUPFD, fd); + (void) fcntl(ds_fd, F_DUPFD, fd); if (fd) - sprintf(cmd, "%s obs=%d 2>/dev/null", DDPROC, - ds_bufsize); + (void) snprintf(cmd, sizeof (cmd), + "%s obs=%d 2>/dev/null", DDPROC, ds_bufsize); else - sprintf(cmd, "%s ibs=%d 2>/dev/null", DDPROC, - ds_bufsize); + (void) snprintf(cmd, sizeof (cmd), + "%s ibs=%d 2>/dev/null", DDPROC, ds_bufsize); if ((ds_pp = popen(cmd, fd ? "w" : "r")) == NULL) { progerr(pkg_gt(ERR_TRANSFER)); logerr(pkg_gt(MSG_POPEN), cmd, errno); return (-1); } (void) close(fd); - fcntl(fd2, F_DUPFD, fd); + (void) fcntl(fd2, F_DUPFD, fd); (void) close(fd2); ds_realfd = ds_fd; ds_fd = fileno(ds_pp); @@ -972,42 +834,8 @@ lab: int ds_close(int pkgendflg) { -#ifdef u3b2 - int cnt, mode; - char *ptr; - struct stat statbuf; -#endif /* u3b2 */ int n, ret = 0; -#ifdef u3b2 - if (ds_pp && ds_ctcflg) { - ds_ctcflg = 0; - if ((mode = fcntl(ds_realfd, F_GETFL, 0)) < 0) { - ret = -1; - } else if (mode & O_WRONLY) { - /* - * pipe to dd write process, - * make sure one more buffer - * gets written out - */ - if ((ptr = calloc(BLK_SIZE, 1)) == NULL) { - ret = -1; - /* pad to bufsize */ - } else { - cnt = ds_bufsize; - while (cnt > 0) { - if ((n = write(ds_fd, ptr, - BLK_SIZE)) < 0) { - ret = -1; - break; - } - cnt -= n; - } - (void) free(ptr); - } - } - } -#endif if (pkgendflg) { if (ds_header) (void) free(ds_header); diff --git a/usr/src/lib/libpkg/common/gpkglist.c b/usr/src/lib/libpkg/common/gpkglist.c index 9257c6afcb..34708b8fe6 100644 --- a/usr/src/lib/libpkg/common/gpkglist.c +++ b/usr/src/lib/libpkg/common/gpkglist.c @@ -146,8 +146,9 @@ gpkglist(char *dir, char **pkg, char **catg) if (!info.pkginst || !info.name || !info.arch || !info.version) continue; - (void) sprintf(temp, "%s %s\n(%s) %s", info.pkginst, - info.name, info.arch, info.version); + (void) snprintf(temp, sizeof (temp), + "%s %s\n(%s) %s", info.pkginst, + info.name, info.arch, info.version); if (setitem(menup, temp)) { errno = EFAULT; return (NULL); diff --git a/usr/src/lib/libpkg/common/gpkgmap.c b/usr/src/lib/libpkg/common/gpkgmap.c index d94b16c4d1..4bbe60dfc3 100644 --- a/usr/src/lib/libpkg/common/gpkgmap.c +++ b/usr/src/lib/libpkg/common/gpkgmap.c @@ -147,13 +147,8 @@ gpkgmap(struct cfent *ept, FILE *fp) ept->ainfo.mode = d_mode; (void) strcpy(ept->ainfo.owner, d_owner); (void) strcpy(ept->ainfo.group, d_group); -#ifdef SUNOS41 - ept->ainfo.xmajor = BADMAJOR; - ept->ainfo.xminor = BADMINOR; -#else ept->ainfo.major = BADMAJOR; ept->ainfo.minor = BADMINOR; -#endif ept->cinfo.cksum = ept->cinfo.modtime = ept->cinfo.size = (-1L); ept->npkgs = 0; @@ -310,18 +305,10 @@ error: } if (strchr("cb", ept->ftype)) { -#ifdef SUNOS41 - ept->ainfo.xmajor = BADMAJOR; - ept->ainfo.xminor = BADMINOR; - if (getnum(fp, 10, (long *)&ept->ainfo.xmajor, BADMAJOR) || - getnum(fp, 10, (long *)&ept->ainfo.xminor, BADMINOR)) -#else ept->ainfo.major = BADMAJOR; ept->ainfo.minor = BADMINOR; if (getnum(fp, 10, (long *)&ept->ainfo.major, BADMAJOR) || - getnum(fp, 10, (long *)&ept->ainfo.minor, BADMINOR)) -#endif - { + getnum(fp, 10, (long *)&ept->ainfo.minor, BADMINOR)) { setErrstr(pkg_gt(ERR_CANNOT_READ_MM_DEVNUMS)); goto error; } diff --git a/usr/src/lib/libpkg/common/keystore.c b/usr/src/lib/libpkg/common/keystore.c index ad94b96c2d..633c04b58e 100644 --- a/usr/src/lib/libpkg/common/keystore.c +++ b/usr/src/lib/libpkg/common/keystore.c @@ -994,7 +994,7 @@ check_cert(PKG_ERR *err, X509 *cert) { char currtimestr[ATTR_MAX]; time_t currtime; - char *r, *before_str, *after_str; + char *r; /* get current time */ if ((currtime = time(NULL)) == (time_t)-1) { pkgerr_add(err, PKGERR_TIME, gettext(ERR_CURR_TIME)); @@ -1942,7 +1942,7 @@ write_keystore(PKG_ERR *err, keystore_t *keystore, * use the one used when the keystore * was read */ - strlcpy(passbuf, keystore->passphrase, + (void) strlcpy(passbuf, keystore->passphrase, KEYSTORE_PASS_MAX); } @@ -1984,7 +1984,7 @@ write_keystore(PKG_ERR *err, keystore_t *keystore, } } else { /* use the one used when the keystore was read */ - strlcpy(passbuf, keystore->passphrase, + (void) strlcpy(passbuf, keystore->passphrase, KEYSTORE_PASS_MAX); } diff --git a/usr/src/lib/libpkg/common/logerr.c b/usr/src/lib/libpkg/common/logerr.c index 7d304b059e..2c648f2fdd 100644 --- a/usr/src/lib/libpkg/common/logerr.c +++ b/usr/src/lib/libpkg/common/logerr.c @@ -34,7 +34,7 @@ #include <stdarg.h> #include "pkglocale.h" -/*VARARGS*/ +/*PRINTFLIKE1*/ void logerr(char *fmt, ...) { @@ -59,7 +59,7 @@ logerr(char *fmt, ...) * this routine be in the same internationalization domain * as this library. */ - (void) vsprintf(buffer, fmt, ap); + (void) vsnprintf(buffer, sizeof (buffer), fmt, ap); va_end(ap); diff --git a/usr/src/lib/libpkg/common/mapfile-vers b/usr/src/lib/libpkg/common/mapfile-vers index ce2bad1bbe..ffdda251f7 100644 --- a/usr/src/lib/libpkg/common/mapfile-vers +++ b/usr/src/lib/libpkg/common/mapfile-vers @@ -132,14 +132,12 @@ SYMBOL_VERSION SUNWprivate { open_keystore; path_valid; pkg_passphrase_cb; - pkgalias; pkgclosefilter; pkgcloseserver; pkgcmd; pkgerr; pkgerr_add; pkgerr_clear; - pkgerr_dump; pkgerr_free; pkgerr_get; pkgerr_new; diff --git a/usr/src/lib/libpkg/common/ncgrpw.c b/usr/src/lib/libpkg/common/ncgrpw.c index cf3151164e..52eb9f813b 100644 --- a/usr/src/lib/libpkg/common/ncgrpw.c +++ b/usr/src/lib/libpkg/common/ncgrpw.c @@ -595,15 +595,16 @@ clgrnam(char *nam) struct group *gr; char *instroot, *buf; FILE *gr_ptr; + size_t bufsz; if ((instroot = get_install_root()) != NULL) { - if ((buf = (char *)malloc(strlen(instroot) + - strlen(GROUP) + 1)) == NULL) { + bufsz = strlen(instroot) + strlen(GROUP) + 1; + if ((buf = (char *)malloc(bufsz)) == NULL) { (void) fprintf(stderr, - pkg_gt(ERR_MALLOC), "clgrnam()", - strlen(instroot) + strlen(GROUP), "buf"); + pkg_gt(ERR_MALLOC), "clgrnam()", + strlen(instroot) + strlen(GROUP), "buf"); } - (void) sprintf(buf, "%s%s", instroot, GROUP); + (void) snprintf(buf, bufsz, "%s%s", instroot, GROUP); if ((gr_ptr = fopen(buf, "r")) == NULL) { free(buf); return (NULL); @@ -636,13 +637,12 @@ clpwnam(char *nam) FILE *pw_ptr; if ((instroot = get_install_root()) != NULL) { - if ((buf = (char *)malloc(strlen(instroot) + - strlen(PASSWD) + 1)) == NULL) { + if (asprintf(&buf, "%s%s", instroot, PASSWD) < 0) { (void) fprintf(stderr, - pkg_gt(ERR_MALLOC), "clpwnam()", - strlen(instroot) + strlen(PASSWD), "buf"); + pkg_gt(ERR_MALLOC), "clpwnam()", + strlen(instroot) + strlen(PASSWD), "buf"); + return (NULL); } - (void) sprintf(buf, "%s%s", instroot, PASSWD); if ((pw_ptr = fopen(buf, "r")) == NULL) { free(buf); return (NULL); @@ -675,13 +675,13 @@ clgrgid(gid_t gid) FILE *gr_ptr; if ((instroot = get_install_root()) != NULL) { - if ((buf = (char *)malloc(strlen(instroot) + - strlen(GROUP) + 1)) == NULL) { + if (asprintf(&buf, "%s%s", instroot, GROUP) < 0) { (void) fprintf(stderr, - pkg_gt(ERR_MALLOC), "clgrgid()", - strlen(instroot) + strlen(GROUP), "buf"); + pkg_gt(ERR_MALLOC), "clgrgid()", + strlen(instroot) + strlen(GROUP), "buf"); + return (NULL); } - (void) sprintf(buf, "%s%s", instroot, GROUP); + if ((gr_ptr = fopen(buf, "r")) == NULL) { free(buf); return (NULL); @@ -714,13 +714,11 @@ clpwuid(uid_t uid) FILE *pw_ptr; if ((instroot = get_install_root()) != NULL) { - if ((buf = (char *)malloc(strlen(instroot) + - strlen(PASSWD) + 1)) == NULL) { - (void) fprintf(stderr, - pkg_gt(ERR_MALLOC), "clpwuid()", - strlen(instroot) + strlen(PASSWD), "buf"); + if (asprintf(&buf, "%s%s", instroot, PASSWD) < 0) { + (void) fprintf(stderr, pkg_gt(ERR_MALLOC), "clpwuid()", + strlen(instroot) + strlen(PASSWD), "buf"); + return (NULL); } - (void) sprintf(buf, "%s%s", instroot, PASSWD); if ((pw_ptr = fopen(buf, "r")) == NULL) { free(buf); return (NULL); diff --git a/usr/src/lib/libpkg/common/pkgerr.c b/usr/src/lib/libpkg/common/pkgerr.c index eb0254055a..6828d88968 100644 --- a/usr/src/lib/libpkg/common/pkgerr.c +++ b/usr/src/lib/libpkg/common/pkgerr.c @@ -64,6 +64,7 @@ PKG_ERR return (newerr); } +/*PRINTFLIKE3*/ void pkgerr_add(PKG_ERR *err, PKG_ERR_CODE code, char *fmt, ...) { @@ -101,17 +102,6 @@ pkgerr_clear(PKG_ERR *err) } int -pkgerr_dump(PKG_ERR *err, FILE *fp) -{ - int i; - - for (i = 0; i < err->nerrs; i++) { - (void) fprintf(fp, err->msgs[i]); - } - return (0); -} - -int pkgerr_num(PKG_ERR *err) { return (err->nerrs); diff --git a/usr/src/lib/libpkg/common/pkgexecv.c b/usr/src/lib/libpkg/common/pkgexecv.c index 28a7a07250..da703892db 100644 --- a/usr/src/lib/libpkg/common/pkgexecv.c +++ b/usr/src/lib/libpkg/common/pkgexecv.c @@ -40,6 +40,7 @@ #include <fcntl.h> #include <pwd.h> #include <grp.h> +#include <note.h> #include "pkglib.h" #include "pkglibmsgs.h" #include "pkglocale.h" @@ -70,6 +71,7 @@ static int sig_received = 0; static void sig_trap(int a_signo) { + _NOTE(ARGUNUSED(a_signo)); sig_received++; } @@ -252,7 +254,7 @@ pkgexecv(char *filein, char *fileout, char *uname, char *gname, char *arg[]) for (;;) { status = 0; - waitstat = waitpid(pid, (int *)&status, 0); + waitstat = waitpid(pid, &status, 0); if (waitstat < 0) { /* waitpid returned error */ if (errno == EAGAIN) { @@ -293,8 +295,8 @@ pkgexecv(char *filein, char *fileout, char *uname, char *gname, char *arg[]) /* error if child process does not match */ if (waitstat != pid) { - progerr(pkg_gt(ERR_WAIT_FAILED), pid, waitstat, status, - errno, strerror(errno)); + progerr(pkg_gt(ERR_WAIT_FAILED), pid, status, + errno, strerror(errno)); return (-1); } diff --git a/usr/src/lib/libpkg/common/pkglib.h b/usr/src/lib/libpkg/common/pkglib.h index 04b17730ca..4e4bdabf91 100644 --- a/usr/src/lib/libpkg/common/pkglib.h +++ b/usr/src/lib/libpkg/common/pkglib.h @@ -403,8 +403,6 @@ struct dstr { #define streq(a, b) (strcmp((a), (b)) == 0) #define strneq(a, b, c) (strncmp((a), (b), (c)) == 0) -#ifdef __STDC__ - extern FILE *epopen(char *cmd, char *mode); extern char **gpkglist(char *dir, char **pkg, char **catg); extern int is_not_valid_length(char **category); @@ -496,7 +494,7 @@ extern void checksum_off(void); extern void checksum_on(void); extern void cvtpath(char *path, char *copy); extern void ds_order(char *list[]); -extern void ds_putinfo(char *buf); +extern void ds_putinfo(char *buf, size_t); extern void ds_skiptoend(char *device); extern void ecleanup(void); /*PRINTFLIKE1*/ @@ -587,104 +585,6 @@ extern start_mode_t pkgservergetmode(void); extern start_mode_t pkgparsemode(const char *); extern char *pkgmodeargument(start_mode_t); - -#else /* __STDC__ */ - -extern FILE *epopen(); -extern void pkglist_cont(); -extern char **gpkglist(); -extern char **pkgalias(); -extern char *get_prog_name(); -extern char *set_prog_name(); -extern int averify(); -extern int ckparam(); -extern int ckvolseq(); -extern int cverify(); -extern unsigned long compute_checksum(); -extern int fverify(); -extern char *getErrbufAddr(); -extern int getErrbufSize(); -extern char *getErrstr(); -extern void setErrstr(); -extern int devtype(); -extern int ds_close(); -extern int ds_findpkg(); -extern int ds_getinfo(); -extern int ds_getpkg(); -extern int ds_ginit(); -extern boolean_t ds_fd_open(); -extern int ds_init(); -extern int ds_next(); -extern int ds_readbuf(); -extern int epclose(); -extern int esystem(); -extern int e_ExecCmdArray(); -extern int e_ExecCmdList(); -extern int gpkgmap(); -extern int isFdRemote(); -extern int isFstypeRemote(); -extern int isPathRemote(); -extern int iscpio(); -extern int isdir(); -extern int isfile(); -extern int pkgexecl(); -extern int pkgexecv(); -extern int pkghead(); -extern int pkgmount(); -extern int pkgtrans(); -extern int pkgumount(); -extern int ppkgmap(); -extern int putcfile(); -extern int putcvfpfile(); -extern int rrmdir(); -extern int srchcfile(); -extern struct group *cgrgid(); -extern struct group *cgrnam(); -extern struct passwd *cpwnam(); -extern struct passwd *cpwuid(); -extern void basepath(); -extern void canonize(); -extern void canonize_slashes(); -extern void checksum_off(); -extern void checksum_on(); -extern void cvtpath(); -extern void ds_order(); -extern void ds_putinfo(); -extern void ds_skiptoend(); -extern void ecleanup(); -extern void logerr(); -extern int mappath(); -extern int mapvar(); -extern void progerr(); -extern void rpterr(); -extern void tputcfent(); -extern void set_nonABI_symlinks(); -extern int nonABI_symlinks(); -extern void disable_attribute_check(); -extern int get_disable_attribute_check(); -/* vfpops.c */ -extern int vfpCheckpointFile(); -extern int vfpCheckpointOpen(); -extern int vfpClearModified(); -extern int vfpClose(); -extern int vfpGetModified(); -extern int vfpOpen(); -extern void vfpRewind(); -extern int vfpSetFlags(); -extern int vfpSetModified(); -extern int vfpSetSize(); -extern void vfpTruncate(); -extern int vfpWriteToFile(); - -/* handlelocalfs.c */ -boolean_t enable_local_fs(); -boolean_t restore_local_fs(); - -/* gpkgmap.c */ -int getmapmode(void); - -#endif /* __STDC__ */ - #ifdef __cplusplus } #endif diff --git a/usr/src/lib/libpkg/common/pkglibmsgs.h b/usr/src/lib/libpkg/common/pkglibmsgs.h index cf77b0f57a..4b811ca6ae 100644 --- a/usr/src/lib/libpkg/common/pkglibmsgs.h +++ b/usr/src/lib/libpkg/common/pkglibmsgs.h @@ -209,7 +209,7 @@ extern "C" { #define MSG_KEYSTORE_UNKNOWN "Unknown" /* parameter errors */ -#define ERR_LEN "length of parameter value <%s> exceeds limit" +#define ERR_LEN "length of parameter <%s> value exceeds limit" #define ERR_ASCII "parameter <%s> must be ascii" #define ERR_ALNUM "parameter <%s> must be alphanumeric" #define ERR_CHAR "parameter <%s> has incorrect first character" @@ -235,7 +235,8 @@ extern "C" { #define MSG_PKGNAME "- invalid package name in datastream table-of-contents" #define MSG_NOPKG "- package <%s> not in datastream" #define MSG_STATFS "- unable to stat filesystem, errno=%d" -#define MSG_NOSPACE "- not enough space, %d blocks required, %d available" +#define MSG_NOSPACE "- not enough space, %ld blocks required, "\ + "%lld available" /* pkglist errors */ #define ERR_MEMORY "memory allocation failure, errno=%d" @@ -271,7 +272,7 @@ extern "C" { #define LABEL3 "Insert %%v into %%p." /* package verify errors */ -#define MSG_WLDDEVNO "NOTE: <%s> created as device (%d, %d)." +#define MSG_WLDDEVNO "NOTE: <%s> created as device (%ld, %ld)." #define WRN_QV_SIZE "WARNING: quick verify of <%s>; wrong size." #define WRN_QV_MTIME "WARNING: quick verify of <%s>; wrong mod time." @@ -288,8 +289,9 @@ extern "C" { #define ERR_CKSUM "file cksum <%ld> expected <%ld> actual" #define ERR_NO_CKSUM "unable to checksum, may need to re-run command as " \ "user \"root\"" -#define ERR_MAJMIN "major/minor device <%d, %d> expected <%d, %d> actual" -#define ERR_PERM "permissions <%04o> expected <%04o> actual" +#define ERR_MAJMIN "major/minor device <%ld, %ld> " \ + "expected <%ld, %ld> actual" +#define ERR_PERM "permissions <%04lo> expected <%04lo> actual" #define ERR_GROUP "group name <%s> expected <%s> actual" #define ERR_OWNER "owner name <%s> expected <%s> actual" #define ERR_MODFAIL "unable to fix modification time" @@ -325,8 +327,8 @@ extern "C" { #define ERR_TOO_MANY_ARGS "too many arguments passed to pkgexecl " \ "for command <%s>" -#define ERR_WAIT_FAILED "wait for process %ld failed, pid <%ld> status " \ - "<0x%08lx> errno <%d> (%s)" +#define ERR_WAIT_FAILED "wait for process %ld failed, status " \ + "<0x%08x> errno <%d> (%s)" #define ERR_FORK_FAILED "fork() failed errno=%d (%s)" #define ERR_FREOPEN "freopen(%s, \"%s\", %s) failed, errno=%d (%s)" #define ERR_FDOPEN "fdopen(%d, \"%s\") failed, errno=%d (%s)" diff --git a/usr/src/lib/libpkg/common/pkgmount.c b/usr/src/lib/libpkg/common/pkgmount.c index e3c560ec70..1b64f0adc5 100644 --- a/usr/src/lib/libpkg/common/pkgmount.c +++ b/usr/src/lib/libpkg/common/pkgmount.c @@ -43,7 +43,6 @@ #include "pkglibmsgs.h" #include "pkglocale.h" -extern void quit(int retcode); /* Expected to be declared by caller! */ /* libadm.a */ extern int getvol(char *device, char *label, int options, char *prompt); @@ -63,16 +62,16 @@ pkgmount(struct pkgdev *devp, char *pkg, int part, int nparts, int getvolflg) if (part && nparts) { if (pkg) { - (void) sprintf(prompt, pkg_gt(LABEL0), part, - nparts, pkg); + (void) snprintf(prompt, sizeof (prompt), + pkg_gt(LABEL0), part, nparts, pkg); } else { - (void) sprintf(prompt, pkg_gt(LABEL1), part, - nparts); + (void) snprintf(prompt, sizeof (prompt), + pkg_gt(LABEL1), part, nparts); } } else if (pkg) - (void) sprintf(prompt, pkg_gt(LABEL2), pkg); + (void) snprintf(prompt, sizeof (prompt), pkg_gt(LABEL2), pkg); else - (void) sprintf(prompt, pkg_gt(LABEL3)); + (void) snprintf(prompt, sizeof (prompt), pkg_gt(LABEL3)); n = 0; for (;;) { @@ -96,7 +95,8 @@ pkgmount(struct pkgdev *devp, char *pkg, int part, int nparts, int getvolflg) } if (devp->fstyp == NULL) { - (void) sprintf(cmd, "%s %s", FSTYP, devp->bdevice); + (void) snprintf(cmd, sizeof (cmd), + "%s %s", FSTYP, devp->bdevice); if ((pp = epopen(cmd, "r")) == NULL) { rpterr(); logerr(pkg_gt(ERR_FSTYP), devp->bdevice); @@ -158,7 +158,7 @@ pkgumount(struct pkgdev *devp) if (n != 0) { progerr(pkg_gt("retrying umount of %s"), devp->bdevice); - sleep(5); + (void) sleep(5); } } if (n == 0) diff --git a/usr/src/lib/libpkg/common/pkgserv.c b/usr/src/lib/libpkg/common/pkgserv.c index 176600e7b3..785f275dfc 100644 --- a/usr/src/lib/libpkg/common/pkgserv.c +++ b/usr/src/lib/libpkg/common/pkgserv.c @@ -358,7 +358,7 @@ openserver: assert(args <= sizeof (cmd)/sizeof (char *)); if (posix_spawn(&pid, PKGSERV_PATH, NULL, NULL, cmd, environ) == 0) { - server->onetime |= mode == RUN_ONCE; + server->onetime |= (mode == RUN_ONCE); while (wait4(pid, &stat, 0, NULL) != -1) { if (WIFEXITED(stat)) { int s = WEXITSTATUS(stat); @@ -434,6 +434,7 @@ pkgmodeargument(start_mode_t mode) } progerr(gettext("Bad pkgserv mode: %d"), (int)mode); exit(99); + /*NOTREACHED*/ } void diff --git a/usr/src/lib/libpkg/common/pkgtrans.c b/usr/src/lib/libpkg/common/pkgtrans.c index dbaaa73adf..a717360580 100644 --- a/usr/src/lib/libpkg/common/pkgtrans.c +++ b/usr/src/lib/libpkg/common/pkgtrans.c @@ -51,6 +51,7 @@ #include <openssl/pkcs7.h> #include <openssl/err.h> #include <openssl/pem.h> +#include <note.h> #include "pkginfo.h" #include "pkgstrct.h" #include "pkgtrans.h" @@ -114,7 +115,7 @@ static int ckoverwrite(char *dir, char *inst, int options); static int pkgxfer(char *srcinst, int options); static int wdsheader(struct dm_buf *, char *src, char *device, char **pkg, PKCS7 *); -static struct dm_buf *genheader(char *, char *, char **); +static struct dm_buf *genheader(char *, char **); static int dump_hdr_and_pkgs(BIO *, struct dm_buf *, char **); @@ -286,7 +287,7 @@ _pkgtrans(char *device1, char *device2, char **pkg, int options, /* initialize PKCS7 object to be filled in later */ sec_pkcs7 = PKCS7_new(); - PKCS7_set_type(sec_pkcs7, NID_pkcs7_signed); + (void) PKCS7_set_type(sec_pkcs7, NID_pkcs7_signed); sec_signerinfo = PKCS7_add_signature(sec_pkcs7, pubcert, privkey, EVP_sha1()); @@ -298,7 +299,7 @@ _pkgtrans(char *device1, char *device2, char **pkg, int options, } /* add signer cert into signature */ - PKCS7_add_certificate(sec_pkcs7, pubcert); + (void) PKCS7_add_certificate(sec_pkcs7, pubcert); /* attempt to resolve cert chain starting at the signer cert */ if (get_cert_chain(err, pubcert, clcerts, cacerts, @@ -314,7 +315,7 @@ _pkgtrans(char *device1, char *device2, char **pkg, int options, * since it's baked in already, so skip it */ for (i = 1; i < sk_X509_num(sec_chain); i++) { - PKCS7_add_certificate(sec_pkcs7, + (void) PKCS7_add_certificate(sec_pkcs7, sk_X509_value(sec_chain, i)); } @@ -526,14 +527,14 @@ _pkgtrans(char *device1, char *device2, char **pkg, int options, logerr(pkg_gt(MSG_GETVOL)); return (1); } - if ((hdr = genheader(src, ods_name, pkg)) == NULL) { + if ((hdr = genheader(src, pkg)) == NULL) { cleanup(); return (1); } if (making_sig) { /* start up signature data stream */ - PKCS7_content_new(sec_pkcs7, NID_pkcs7_data); - PKCS7_set_detached(sec_pkcs7, 1); + (void) PKCS7_content_new(sec_pkcs7, NID_pkcs7_data); + (void) PKCS7_set_detached(sec_pkcs7, 1); p7_bio = PKCS7_dataInit(sec_pkcs7, NULL); /* @@ -568,7 +569,7 @@ _pkgtrans(char *device1, char *device2, char **pkg, int options, return (1); } - BIO_free(p7_bio); + (void) BIO_free(p7_bio); } /* write out header to stream, which includes signature */ @@ -767,13 +768,14 @@ cat_and_count(struct dm_buf *buf_ctrl, char *append) } static struct dm_buf * -genheader(char *src, char *device, char **pkg) +genheader(char *src, char **pkg) { FILE *fp; char path[MAXPATHLEN], tmp_entry[ENTRY_MAX]; int i, n, nparts, maxpsize; - int partcnt, totsize; + int partcnt; + long totsize; struct stat statbuf; if ((hdrbuf.text_buffer = (char *)malloc(BLK_SIZE)) == NULL) { @@ -841,7 +843,8 @@ genheader(char *src, char *device, char **pkg) if (dstdev.capacity && maxpsize > dstdev.capacity) { progerr(pkg_gt(ERR_TRANSFER)); - logerr(pkg_gt(MSG_NOSPACE)); + logerr(pkg_gt(MSG_NOSPACE), (long)maxpsize, + dstdev.capacity); (void) fclose(fp); ecleanup(); return (NULL); @@ -867,15 +870,6 @@ genheader(char *src, char *device, char **pkg) totsize += nparts * maxpsize; if (dstdev.capacity && dstdev.capacity < totsize) { int lastpartcnt = 0; -#if 0 - if (i != 0) { - progerr(pkg_gt(ERR_TRANSFER)); - logerr(pkg_gt(MSG_NOSPACE)); - (void) fclose(fp); - ecleanup(); - return (NULL); - } -#endif /* 0 */ if (totsize) totsize -= nparts * maxpsize; @@ -969,7 +963,7 @@ wdsheader(struct dm_buf *hdr, char *src, char *device, char **pkg, PKCS7 *sig) */ for (block_cnt = 0; block_cnt < hdr->allocation; block_cnt += BLK_SIZE) { - write(ds_fd, (hdr->text_buffer + block_cnt), BLK_SIZE); + (void) write(ds_fd, (hdr->text_buffer + block_cnt), BLK_SIZE); } /* @@ -978,9 +972,9 @@ wdsheader(struct dm_buf *hdr, char *src, char *device, char **pkg, PKCS7 *sig) * for all packages */ (void) tmpnam(tmp_file); /* temporary file name */ - if ((list_fd = open(tmp_file, O_RDWR | O_CREAT)) == -1) { + if ((list_fd = open(tmp_file, O_RDWR | O_CREAT, 0644)) == -1) { progerr(pkg_gt(ERR_TRANSFER)); - logerr(pkg_gt(MSG_NOTMPFIL)); + logerr(pkg_gt(MSG_NOTMPFIL), tmp_file); return (1); } @@ -1004,7 +998,7 @@ wdsheader(struct dm_buf *hdr, char *src, char *device, char **pkg, PKCS7 *sig) if (write(list_fd, tmp_entry, entry_size) != entry_size) { progerr(pkg_gt(ERR_TRANSFER)); - logerr(pkg_gt(MSG_NOTMPFIL)); + logerr(pkg_gt(MSG_NOTMPFIL), tmp_file); (void) close(list_fd); ecleanup(); return (1); @@ -1045,20 +1039,22 @@ wdsheader(struct dm_buf *hdr, char *src, char *device, char **pkg, PKCS7 *sig) cleanup(); return (1); } - PEM_write_PKCS7(fp, sig); + (void) PEM_write_PKCS7(fp, sig); (void) fclose(fp); for (i = 0; pkg[i]; i++) { - sprintf(path, "%s/%s", tmpsymdir, pkg[i]); + (void) snprintf(path, sizeof (path), + "%s/%s", tmpsymdir, pkg[i]); if (mkdir(path, 0755)) { progerr(pkg_gt(ERR_TRANSFER)); logerr(pkg_gt(MSG_MKDIR), path); cleanup(); return (1); } - sprintf(path, "%s/%s/%s", tmpsymdir, - pkg[i], PKGINFO); - sprintf(srcpath, "%s/%s/%s", src, pkg[i], PKGINFO); + (void) snprintf(path, sizeof (path), + "%s/%s/%s", tmpsymdir, pkg[i], PKGINFO); + (void) snprintf(srcpath, sizeof (srcpath), + "%s/%s/%s", src, pkg[i], PKGINFO); if (symlink(srcpath, path) != 0) { progerr(pkg_gt(ERR_TRANSFER)); logerr(pkg_gt(MSG_SYMLINK), path, srcpath); @@ -1066,9 +1062,10 @@ wdsheader(struct dm_buf *hdr, char *src, char *device, char **pkg, PKCS7 *sig) return (1); } - sprintf(path, "%s/%s/%s", tmpsymdir, - pkg[i], PKGMAP); - sprintf(srcpath, "%s/%s/%s", src, pkg[i], PKGMAP); + (void) snprintf(path, sizeof (path), + "%s/%s/%s", tmpsymdir, pkg[i], PKGMAP); + (void) snprintf(srcpath, sizeof (srcpath), + "%s/%s/%s", src, pkg[i], PKGMAP); if (symlink(srcpath, path) != 0) { progerr(pkg_gt(ERR_TRANSFER)); logerr(pkg_gt(MSG_SYMLINK), path, srcpath); @@ -1081,14 +1078,14 @@ wdsheader(struct dm_buf *hdr, char *src, char *device, char **pkg, PKCS7 *sig) * temporary string allowing for the first line * as a special case. */ - entry_size = sprintf(tmp_entry, + entry_size = snprintf(tmp_entry, sizeof (tmp_entry), (i == 0) ? "%s/%s\n%s/%s" : "\n%s/%s\n%s/%s", pkg[i], PKGINFO, pkg[i], PKGMAP); if (write(list_fd, tmp_entry, entry_size) != entry_size) { progerr(pkg_gt(ERR_TRANSFER)); - logerr(pkg_gt(MSG_NOTMPFIL)); + logerr(pkg_gt(MSG_NOTMPFIL), tmp_file); (void) close(list_fd); ecleanup(); cleanup(); @@ -1097,7 +1094,8 @@ wdsheader(struct dm_buf *hdr, char *src, char *device, char **pkg, PKCS7 *sig) } /* add signature to list of files */ - entry_size = sprintf(tmp_entry, "\n%s", SIGNATURE_FILENAME); + entry_size = snprintf(tmp_entry, sizeof (tmp_entry), "\n%s", + SIGNATURE_FILENAME); if (write(list_fd, tmp_entry, entry_size) != entry_size) { progerr(pkg_gt(ERR_TRANSFER)); logerr(pkg_gt(MSG_NOTMPFIL), tmp_file); @@ -1111,26 +1109,16 @@ wdsheader(struct dm_buf *hdr, char *src, char *device, char **pkg, PKCS7 *sig) (void) lseek(list_fd, 0, SEEK_SET); if (!making_sig) { -#ifndef SUNOS41 - (void) sprintf(tmp_entry, "%s -ocD -C %d", - CPIOPROC, (int)BLK_SIZE); -#else - (void) sprintf(tmp_entry, "%s -oc -C %d", - CPIOPROC, (int)BLK_SIZE); -#endif + (void) snprintf(tmp_entry, sizeof (tmp_entry), + "%s -ocD -C %d", CPIOPROC, (int)BLK_SIZE); } else { /* * when making a signature, we must make sure to follow * symlinks during the cpio so that we don't archive * the links themselves */ -#ifndef SUNOS41 - (void) sprintf(tmp_entry, "%s -ocDL -C %d", - CPIOPROC, (int)BLK_SIZE); -#else - (void) sprintf(tmp_entry, "%s -ocL -C %d", - CPIOPROC, (int)BLK_SIZE); -#endif + (void) snprintf(tmp_entry, sizeof (tmp_entry), + "%s -ocDL -C %d", CPIOPROC, (int)BLK_SIZE); } if (making_sig) { @@ -1180,7 +1168,7 @@ ckoverwrite(char *dir, char *inst, int options) { char path[PATH_MAX]; - (void) sprintf(path, "%s/%s", dir, inst); + (void) snprintf(path, sizeof (path), "%s/%s", dir, inst); if (access(path, 0) == 0) { if (options & PT_OVERWRITE) return (rrmdir(path)); @@ -1223,11 +1211,12 @@ pkgxfer(char *srcinst, int options) if (!(options & PT_SILENT)) (void) fprintf(stderr, pkg_gt(MSG_TRANSFER), srcinst); - (void) strcpy(dstinst, srcinst); + (void) strlcpy(dstinst, srcinst, sizeof (dstinst)); if (!(options & PT_ODTSTREAM)) { /* destination is a (possibly mounted) directory */ - (void) sprintf(dstdir, "%s/%s", dst, dstinst); + (void) snprintf(dstdir, sizeof (dstdir), + "%s/%s", dst, dstinst); /* * need to check destination directory to assure @@ -1244,10 +1233,10 @@ pkgxfer(char *srcinst, int options) } pkgdir = dst; - (void) strcpy(temp, srcinst); + (void) strlcpy(temp, srcinst, sizeof (temp)); if (pt = strchr(temp, '.')) *pt = '\0'; - (void) strcat(temp, ".*"); + (void) strlcat(temp, ".*", sizeof (temp)); if (pt = fpkginst(temp, info.arch, info.version)) { /* @@ -1255,8 +1244,9 @@ pkgxfer(char *srcinst, int options) * its pkgid might be different */ if (options & PT_OVERWRITE) { - (void) strcpy(dstinst, pt); - (void) sprintf(dstdir, "%s/%s", dst, dstinst); + (void) strlcpy(dstinst, pt, sizeof (dstinst)); + (void) snprintf(dstdir, sizeof (dstdir), + "%s/%s", dst, dstinst); } else { progerr(pkg_gt(ERR_TRANSFER)); logerr(pkg_gt(MSG_DUPVERS), srcinst); @@ -1273,8 +1263,10 @@ pkgxfer(char *srcinst, int options) if (pt = strchr(temp, '.')) *pt = '\0'; for (i = 2; (access(dstdir, 0) == 0); i++) { - (void) sprintf(dstinst, "%s.%d", temp, i); - (void) sprintf(dstdir, "%s/%s", dst, dstinst); + (void) snprintf(dstinst, sizeof (dstinst), + "%s.%d", temp, i); + (void) snprintf(dstdir, sizeof (dstdir), + "%s/%s", dst, dstinst); } } else if (options & PT_OVERWRITE) { /* @@ -1300,7 +1292,8 @@ pkgxfer(char *srcinst, int options) return (1); } - (void) sprintf(srcdir, "%s/%s", src, srcinst); + (void) snprintf(srcdir, sizeof (srcdir), + "%s/%s", src, srcinst); if (stat(srcdir, &srcstat) != -1) { if (chmod(dstdir, (srcstat.st_mode & S_IAMB)) == -1) { progerr(pkg_gt(ERR_TRANSFER)); @@ -1317,7 +1310,7 @@ pkgxfer(char *srcinst, int options) if (!(options & PT_SILENT) && strcmp(dstinst, srcinst)) (void) fprintf(stderr, pkg_gt(MSG_RENAME), dstinst); - (void) sprintf(srcdir, "%s/%s", src, srcinst); + (void) snprintf(srcdir, sizeof (srcdir), "%s/%s", src, srcinst); if (chdir(srcdir)) { progerr(pkg_gt(ERR_TRANSFER)); logerr(pkg_gt(MSG_CHDIR), srcdir); @@ -1328,7 +1321,8 @@ pkgxfer(char *srcinst, int options) /* * transfer pkginfo & pkgmap first */ - (void) sprintf(cmd, "%s -pudm %s", CPIOPROC, dstdir); + (void) snprintf(cmd, sizeof (cmd), + "%s -pudm %s", CPIOPROC, dstdir); if ((pp = epopen(cmd, "w")) == NULL) { rpterr(); progerr(pkg_gt(ERR_TRANSFER)); @@ -1337,11 +1331,11 @@ pkgxfer(char *srcinst, int options) } (void) fprintf(pp, "%s\n%s\n", PKGINFO, PKGMAP); - sighold(SIGINT); - sighold(SIGHUP); + (void) sighold(SIGINT); + (void) sighold(SIGHUP); r = epclose(pp); - sigrelse(SIGINT); - sigrelse(SIGHUP); + (void) sigrelse(SIGINT); + (void) sigrelse(SIGHUP); if (r != 0) { rpterr(); @@ -1415,11 +1409,11 @@ pkgxfer(char *srcinst, int options) } (void) fprintf(pp, "pkginfo"); - sighold(SIGINT); - sighold(SIGHUP); + (void) sighold(SIGINT); + (void) sighold(SIGHUP); r = epclose(pp); - sigrelse(SIGINT); - sigrelse(SIGHUP); + (void) sigrelse(SIGINT); + (void) sigrelse(SIGHUP); if (r != 0) { rpterr(); @@ -1467,10 +1461,12 @@ pkgxfer(char *srcinst, int options) char line[128]; (void) mgets(line, 128); curpartcnt = -1; - if (sscanf(line, "%s %d %d %[ 0-9]", &pkgname, &nparts, + /* LINTED E_SEC_SCANF_UNBOUNDED_COPY */ + if (sscanf(line, "%s %d %d %[ 0-9]", pkgname, &nparts, &maxpartsize, volnos) == 4) { - sscanf(volnos, "%d %[ 0-9]", &curpartcnt, tmpvol); - strcpy(volnos, tmpvol); + (void) sscanf(volnos, + "%d %[ 0-9]", &curpartcnt, tmpvol); + (void) strlcpy(volnos, tmpvol, sizeof (volnos)); } } @@ -1500,7 +1496,7 @@ pkgxfer(char *srcinst, int options) } (void) sscanf(volnos, "%d %[ 0-9]", &index, tmpvol); - (void) strcpy(volnos, tmpvol); + (void) strlcpy(volnos, tmpvol, sizeof (volnos)); curpartcnt += index; } @@ -1508,59 +1504,61 @@ pkgxfer(char *srcinst, int options) nparts = 0; if (part == 1) { - (void) sprintf(cmd, "find %s %s", PKGINFO, PKGMAP); + (void) snprintf(cmd, sizeof (cmd), + "find %s %s", PKGINFO, PKGMAP); if (nparts && (isdir(INSTALL) == 0)) { - (void) strcat(cmd, " "); - (void) strcat(cmd, INSTALL); + (void) strlcat(cmd, " ", sizeof (cmd)); + (void) strlcat(cmd, INSTALL, sizeof (cmd)); } } else - (void) sprintf(cmd, "find %s", PKGINFO); + (void) snprintf(cmd, sizeof (cmd), "find %s", PKGINFO); if (nparts > 1) { - (void) sprintf(temp, "%s.%d", RELOC, part); + (void) snprintf(temp, sizeof (temp), + "%s.%d", RELOC, part); if (iscpio(temp, &iscomp) || isdir(temp) == 0) { - (void) strcat(cmd, " "); - (void) strcat(cmd, temp); + (void) strlcat(cmd, " ", sizeof (cmd)); + (void) strlcat(cmd, temp, sizeof (cmd)); } - (void) sprintf(temp, "%s.%d", ROOT, part); + (void) snprintf(temp, sizeof (temp), + "%s.%d", ROOT, part); if (iscpio(temp, &iscomp) || isdir(temp) == 0) { - (void) strcat(cmd, " "); - (void) strcat(cmd, temp); + (void) strlcat(cmd, " ", sizeof (cmd)); + (void) strlcat(cmd, temp, sizeof (cmd)); } - (void) sprintf(temp, "%s.%d", ARCHIVE, part); + (void) snprintf(temp, sizeof (temp), + "%s.%d", ARCHIVE, part); if (isdir(temp) == 0) { - (void) strcat(cmd, " "); - (void) strcat(cmd, temp); + (void) strlcat(cmd, " ", sizeof (cmd)); + (void) strlcat(cmd, temp, sizeof (cmd)); } } else if (nparts) { for (i = 0; reloc_names[i] != NULL; i++) { if (iscpio(reloc_names[i], &iscomp) || isdir(reloc_names[i]) == 0) { - (void) strcat(cmd, " "); - (void) strcat(cmd, reloc_names[i]); + (void) strlcat(cmd, " ", sizeof (cmd)); + (void) strlcat(cmd, reloc_names[i], + sizeof (cmd)); } } for (i = 0; root_names[i] != NULL; i++) { if (iscpio(root_names[i], &iscomp) || isdir(root_names[i]) == 0) { - (void) strcat(cmd, " "); - (void) strcat(cmd, root_names[i]); + (void) strlcat(cmd, " ", sizeof (cmd)); + (void) strlcat(cmd, root_names[i], + sizeof (cmd)); } } if (isdir(ARCHIVE) == 0) { - (void) strcat(cmd, " "); - (void) strcat(cmd, ARCHIVE); + (void) strlcat(cmd, " ", sizeof (cmd)); + (void) strlcat(cmd, ARCHIVE, sizeof (cmd)); } } if (options & PT_ODTSTREAM) { -#ifndef SUNOS41 - (void) sprintf(cmd+strlen(cmd), + (void) snprintf(cmd + strlen(cmd), + sizeof (cmd) - strlen(cmd), " -print | %s -ocD -C %d", -#else - (void) sprintf(cmd+strlen(cmd), - " -print | %s -oc -C %d", -#endif - CPIOPROC, (int)BLK_SIZE); + CPIOPROC, (int)BLK_SIZE); } else { if (statvfs64(dstdir, &svfsb) == -1) { progerr(pkg_gt(ERR_TRANSFER)); @@ -1575,11 +1573,16 @@ pkgxfer(char *srcinst, int options) if ((has_comp_size ? compressedsize : maxpartsize) > free_blocks) { progerr(pkg_gt(ERR_TRANSFER)); - logerr(pkg_gt(MSG_NOSPACE)); + logerr(pkg_gt(MSG_NOSPACE), + has_comp_size ? + (long)compressedsize : (long)maxpartsize, + free_blocks); return (1); } - (void) sprintf(cmd+strlen(cmd), " -print | %s -pdum %s", - CPIOPROC, dstdir); + (void) snprintf(cmd + strlen(cmd), + sizeof (cmd) - strlen(cmd), + " -print | %s -pdum %s", + CPIOPROC, dstdir); } n = esystem(cmd, -1, (options & PT_ODTSTREAM) ? ds_fd : -1); @@ -1604,14 +1607,14 @@ pkgxfer(char *srcinst, int options) return (n); if (chdir(srcdir)) { progerr(pkg_gt(ERR_TRANSFER)); - logerr(pkg_gt(MSG_CORRUPT), srcdir); + logerr(pkg_gt(MSG_CORRUPT)); (void) chdir("/"); - pkgumount(&srcdev); + (void) pkgumount(&srcdev); continue; } if (ckvolseq(srcdir, part, nparts)) { (void) chdir("/"); - pkgumount(&srcdev); + (void) pkgumount(&srcdev); continue; } break; @@ -1667,7 +1670,7 @@ pkgxfer(char *srcinst, int options) (void) sscanf(volnos, "%d %[ 0-9]", &index, tmpvol); - (void) strcpy(volnos, tmpvol); + (void) strlcpy(volnos, tmpvol, sizeof (volnos)); curpartcnt += index; } } @@ -1738,8 +1741,8 @@ pkgdump(char *srcinst, BIO *bio) (void) snprintf(cmd, CMDSIZE, "find %s %s", PKGINFO, PKGMAP); if (nparts && (isdir(INSTALL) == 0)) { - (void) strcat(cmd, " "); - (void) strcat(cmd, INSTALL); + (void) strlcat(cmd, " ", sizeof (cmd)); + (void) strlcat(cmd, INSTALL, sizeof (cmd)); } } else (void) snprintf(cmd, CMDSIZE, "find %s", PKGINFO); @@ -1784,14 +1787,10 @@ pkgdump(char *srcinst, BIO *bio) } } -#ifndef SUNOS41 - (void) sprintf(cmd+strlen(cmd), + (void) snprintf(cmd + strlen(cmd), + sizeof (cmd) - strlen(cmd), " -print | %s -ocD -C %d", -#else - (void) sprintf(cmd+strlen(cmd), - " -print | %s -oc -C %d", -#endif - CPIOPROC, (int)BLK_SIZE); + CPIOPROC, (int)BLK_SIZE); /* * execute the command, dumping all standard output * to the BIO. @@ -1812,37 +1811,38 @@ pkgdump(char *srcinst, BIO *bio) static void sigtrap(int signo) { + _NOTE(ARGUNUSED(signo)); signal_received++; } static void cleanup(void) { - chdir("/"); + (void) chdir("/"); if (tmpdir) { - rrmdir(tmpdir); + (void) rrmdir(tmpdir); free(tmpdir); tmpdir = NULL; } if (tmppath) { /* remove any previous tmppath stuff */ - rrmdir(tmppath); + (void) rrmdir(tmppath); free(tmppath); tmppath = NULL; } if (tmpsymdir) { /* remove temp symbolic links made for signed pkg */ - rrmdir(tmpsymdir); + (void) rrmdir(tmpsymdir); free(tmpsymdir); tmpsymdir = NULL; } if (srcdev.mount && !ids_name) - pkgumount(&srcdev); + (void) pkgumount(&srcdev); if (dstdev.mount && !ods_name) - pkgumount(&dstdev); + (void) pkgumount(&dstdev); (void) ds_close(1); } @@ -1871,7 +1871,7 @@ dump_hdr_and_pkgs(BIO *bio, struct dm_buf *hdr, char **pkglist) /* write out the header to the signature stream */ for (block_cnt = 0; block_cnt < hdr->allocation; block_cnt += BLK_SIZE) { - BIO_write(bio, (hdr->text_buffer + block_cnt), BLK_SIZE); + (void) BIO_write(bio, (hdr->text_buffer + block_cnt), BLK_SIZE); } /* save current directory */ @@ -1941,11 +1941,11 @@ BIO_dump_cmd(char *cmd, BIO *bio) /* read output in chunks, transfer to BIO */ while (fread(buf, BLK_SIZE, 1, fp) == 1) { if (BIO_write(bio, buf, BLK_SIZE) != BLK_SIZE) { - sighold(SIGINT); - sighold(SIGHUP); + (void) sighold(SIGINT); + (void) sighold(SIGHUP); (void) epclose(fp); - sigrelse(SIGINT); - sigrelse(SIGHUP); + (void) sigrelse(SIGINT); + (void) sigrelse(SIGHUP); rpterr(); return (1); } @@ -1959,11 +1959,11 @@ BIO_dump_cmd(char *cmd, BIO *bio) } /* done, close stream, report any errors */ - sighold(SIGINT); - sighold(SIGHUP); + (void) sighold(SIGINT); + (void) sighold(SIGHUP); rc = epclose(fp); - sigrelse(SIGINT); - sigrelse(SIGHUP); + (void) sigrelse(SIGINT); + (void) sigrelse(SIGHUP); if (rc != 0) { rpterr(); return (1); diff --git a/usr/src/lib/libpkg/common/pkgweb.c b/usr/src/lib/libpkg/common/pkgweb.c index 56559a0953..bcda3e53f2 100644 --- a/usr/src/lib/libpkg/common/pkgweb.c +++ b/usr/src/lib/libpkg/common/pkgweb.c @@ -617,6 +617,7 @@ cleanup: * * Returns : none */ +/*PRINTFLIKE2*/ void echo_out(int nointeract, char *fmt, ...) { @@ -941,6 +942,7 @@ validate_signature(PKG_ERR *err, char *name, BIO *indata, PKCS7 *p7, /* some other error. print them all. */ while ((errcode = ERR_get_error_line_data(NULL, NULL, &err_data, &err_flags)) != 0) { + size_t errsz; err_reason = ERR_reason_error_string(errcode); if (err_reason == NULL) { @@ -952,11 +954,11 @@ validate_signature(PKG_ERR *err, char *name, BIO *indata, PKCS7 *p7, err_data = gettext(ERR_SIG_INT); } - err_string = - xmalloc(strlen(err_reason) + - strlen(err_data) + 3); - (void) sprintf(err_string, "%s: %s", - err_reason, err_data); + errsz = strlen(err_reason) + + strlen(err_data) + 3; + err_string = xmalloc(errsz); + (void) snprintf(err_string, errsz, + "%s: %s", err_reason, err_data); pkgerr_add(err, PKGERR_VERIFY, gettext(ERR_VERIFY_SIG), signer_sname, signer_iname, @@ -1263,7 +1265,7 @@ ocsp_verify(PKG_ERR *err, X509 *cert, X509 *issuer, } /* add nonce */ - OCSP_request_add1_nonce(req, NULL, -1); + (void) OCSP_request_add1_nonce(req, NULL, -1); /* connect to host, or proxy */ if (proxy != NULL) { @@ -2823,7 +2825,7 @@ dequote(char *str) } /* remove first quote */ - memmove(str, str + 1, strlen(str) - 1); + (void) memmove(str, str + 1, strlen(str) - 1); /* * scan string looking for ending quote. @@ -3022,7 +3024,7 @@ backoff() initted = B_TRUE; } - backoff = drand48() * (double)cur_backoff; + backoff = (int)(drand48() * (double)cur_backoff); (void) sleep(backoff); if (cur_backoff < MAX_BACKOFF) { /* @@ -3157,7 +3159,7 @@ pkg_passphrase_cb(char *buf, int size, int rw, void *data) */ /* make a copy (getpassphrase overwrites) */ - strlcpy(passphrase_copy, passphrase, + (void) strlcpy(passphrase_copy, passphrase, MAX_PHRASELEN + 1); if (((passlen = snprintf(prompt_copy, @@ -3233,6 +3235,6 @@ pkg_passphrase_cb(char *buf, int size, int rw, void *data) return (-1); } - strlcpy(buf, passphrase, size); + (void) strlcpy(buf, passphrase, size); return (strlen(buf)); } diff --git a/usr/src/lib/libpkg/common/pkgxpand.c b/usr/src/lib/libpkg/common/pkgxpand.c deleted file mode 100644 index 7f92aa8420..0000000000 --- a/usr/src/lib/libpkg/common/pkgxpand.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * CDDL HEADER START - * - * The contents of this file are subject to the terms of the - * Common Development and Distribution License (the "License"). - * You may not use this file except in compliance with the License. - * - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE - * or http://www.opensolaris.org/os/licensing. - * See the License for the specific language governing permissions - * and limitations under the License. - * - * When distributing Covered Code, include this CDDL HEADER in each - * file and include the License file at usr/src/OPENSOLARIS.LICENSE. - * If applicable, add the following below this CDDL HEADER, with the - * fields enclosed by brackets "[]" replaced with your own identifying - * information: Portions Copyright [yyyy] [name of copyright owner] - * - * CDDL HEADER END - */ - -/* - * Copyright 2009 Sun Microsystems, Inc. All rights reserved. - * Use is subject to license terms. - */ - -/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ -/* All Rights Reserved */ - - - -#include <stdio.h> -#include <limits.h> -#include <stdlib.h> -#include <unistd.h> -#include <string.h> -#include "pkglib.h" -#include "pkglocale.h" - -extern char *fpkginst(char *pkg, ...); /* libadm.a */ -extern char *pkgdir; /* WHERE? */ - -#define ispkgalias(p) (*p == '+') -#define LSIZE 512 -#define MALSIZ 16 - -char ** -pkgalias(char *pkg) -{ - FILE *fp; - char path[PATH_MAX], *pkginst; - char *mypkg, *myarch, *myvers, **pkglist; - char line[LSIZE]; - int n, errflg; - - pkglist = (char **)calloc(MALSIZ, sizeof (char *)); - if (pkglist == NULL) - return ((char **)0); - - (void) sprintf(path, "%s/%s/pkgmap", pkgdir, pkg); - if ((fp = fopen(path, "r")) == NULL) - return ((char **)0); - - n = errflg = 0; - while (fgets(line, LSIZE, fp)) { - mypkg = strtok(line, " \t\n"); - myarch = strtok(NULL, "( \t\n)"); - myvers = strtok(NULL, "\n"); - - (void) fpkginst(NULL); - pkginst = fpkginst(mypkg, myarch, myvers); - if (pkginst == NULL) { - logerr( - pkg_gt("no package instance for [%s]"), mypkg); - errflg++; - continue; - } - if (errflg) - continue; - - pkglist[n] = strdup(pkginst); - if ((++n % MALSIZ) == 0) { - pkglist = (char **)realloc(pkglist, - (n+MALSIZ)*sizeof (char *)); - if (pkglist == NULL) - return ((char **)0); - } - } - pkglist[n] = NULL; - - (void) fclose(fp); - if (errflg) { - while (n-- >= 0) - free(pkglist[n]); - free(pkglist); - return ((char **)0); - } - return (pkglist); -} - -#if 0 -char ** -pkgxpand(char *pkg[]) -{ - static int level = 0; - char **pkglist; - int i; - - if (++level >= 0) - printf(pkg_gt("too deep")); - for (i = 0; pkg[i]; i++) { - if (ispkgalias(pkg[i])) { - pkglist = pkgxpand(&pkg[i]); - pkgexpand(pkglist); - } - } -} -#endif /* 0 */ diff --git a/usr/src/lib/libpkg/common/ppkgmap.c b/usr/src/lib/libpkg/common/ppkgmap.c index 423def1bab..e84255202b 100644 --- a/usr/src/lib/libpkg/common/ppkgmap.c +++ b/usr/src/lib/libpkg/common/ppkgmap.c @@ -65,40 +65,20 @@ ppkgmap(struct cfent *ept, FILE *fp) } if (strchr("cb", ept->ftype)) { -#ifdef SUNOS41 - if (ept->ainfo.xmajor == BADMAJOR) { - if (fprintf(fp, " ?") < 0) - return (-1); - } else { - if (fprintf(fp, " %d", ept->ainfo.xmajor) < 0) - return (-1); - } -#else if (ept->ainfo.major == BADMAJOR) { if (fprintf(fp, " ?") < 0) return (-1); } else { - if (fprintf(fp, " %d", ept->ainfo.major) < 0) - return (-1); - } -#endif -#ifdef SUNOS41 - if (ept->ainfo.xminor == BADMINOR) { - if (fprintf(fp, " ?") < 0) - return (-1); - } else { - if (fprintf(fp, " %d", ept->ainfo.xminor) < 0) + if (fprintf(fp, " %ld", ept->ainfo.major) < 0) return (-1); } -#else if (ept->ainfo.minor == BADMINOR) { if (fprintf(fp, " ?") < 0) return (-1); } else { - if (fprintf(fp, " %d", ept->ainfo.minor) < 0) + if (fprintf(fp, " %ld", ept->ainfo.minor) < 0) return (-1); } -#endif } if (strchr("dxcbpfve", ept->ftype)) { diff --git a/usr/src/lib/libpkg/common/progerr.c b/usr/src/lib/libpkg/common/progerr.c index 8feaf4b81b..e239dd8bda 100644 --- a/usr/src/lib/libpkg/common/progerr.c +++ b/usr/src/lib/libpkg/common/progerr.c @@ -74,7 +74,7 @@ get_prog_name(void) } -/*VARARGS*/ +/*PRINTFLIKE1*/ void progerr(char *fmt, ...) { diff --git a/usr/src/lib/libpkg/common/putcfile.c b/usr/src/lib/libpkg/common/putcfile.c index 959f2684b8..a55528a1a4 100644 --- a/usr/src/lib/libpkg/common/putcfile.c +++ b/usr/src/lib/libpkg/common/putcfile.c @@ -103,7 +103,7 @@ putcfile(struct cfent *a_ept, FILE *a_fp) return (-1); } } else { - if (fprintf(a_fp, " %d", a_ept->ainfo.major) < 0) + if (fprintf(a_fp, " %ld", a_ept->ainfo.major) < 0) return (-1); } @@ -116,7 +116,7 @@ putcfile(struct cfent *a_ept, FILE *a_fp) return (-1); } } else { - if (fprintf(a_fp, " %d", a_ept->ainfo.minor) < 0) + if (fprintf(a_fp, " %ld", a_ept->ainfo.minor) < 0) return (-1); } } diff --git a/usr/src/lib/libpkg/common/runcmd.c b/usr/src/lib/libpkg/common/runcmd.c index 945673737e..3be8d36ee2 100644 --- a/usr/src/lib/libpkg/common/runcmd.c +++ b/usr/src/lib/libpkg/common/runcmd.c @@ -62,30 +62,6 @@ static char errfile[L_tmpnam+1]; /* - * This is the "argument array" definition that is returned by e_new_args and is - * used by e_add_args, e_free_args, etc. - */ - -struct _argArray_t { - long _aaNumArgs; /* number of arguments set */ - long _aaMaxArgs; /* number of arguments allocated */ - char **_aaArgs; /* actual arguments */ -}; - -typedef struct _argArray_t argArray_t; - -/* - * Private Methods - */ -static void e_free_args(argArray_t *a_args); -static argArray_t *e_new_args(int initialCount); -/*PRINTFLIKE2*/ -static boolean_t e_add_arg(argArray_t *a_args, char *a_format, ...); -static int e_get_argc(argArray_t *a_args); -static char **e_get_argv(argArray_t *a_args); - - -/* * Public Methods */ @@ -99,7 +75,7 @@ rpterr(void) if (errfile[0]) { if (fp = fopen(errfile, "r")) { while ((c = getc(fp)) != EOF) - putc(c, stderr); + (void) putc(c, stderr); (void) fclose(fp); } (void) unlink(errfile); @@ -170,7 +146,7 @@ esystem(char *cmd, int ifd, int ofd) i = open(errfile, O_WRONLY|O_CREAT|O_TRUNC, 0666); if (i >= 0) { - dup2(i, STDERR_FILENO); + (void) dup2(i, STDERR_FILENO); } /* Close all open files except standard i/o */ @@ -179,7 +155,7 @@ esystem(char *cmd, int ifd, int ofd) /* execute target executable */ - execl("/sbin/sh", "/sbin/sh", "-c", cmd, NULL); + (void) execl("/sbin/sh", "/sbin/sh", "-c", cmd, NULL); progerr(pkg_gt("exec of <%s> failed, errno=%d"), cmd, errno); _exit(99); } else if (pid < 0) { @@ -193,9 +169,9 @@ esystem(char *cmd, int ifd, int ofd) * this is the parent process */ - sighold(SIGINT); + (void) sighold(SIGINT); pid = waitpid(pid, &status, 0); - sigrelse(SIGINT); + (void) sigrelse(SIGINT); if (pid < 0) { return (-1); /* probably interrupted */ @@ -229,7 +205,7 @@ epopen(char *cmd, char *mode) if (errfile[0]) { /* cleanup previous errfile */ - unlink(errfile); + (void) unlink(errfile); } perrfile = tmpnam(NULL); @@ -596,213 +572,3 @@ e_ExecCmdList(int *r_status, char **r_results, return (e_ExecCmdArray(r_status, r_results, a_inputFile, a_cmd, array)); } - -/* - * Name: e_new_args - * Description: create a new argument array for use in exec() calls - * Arguments: initialCount - [RO, *RO] - (int) - * Initial number of elements to populate the - * argument array with - use best guess - * Returns: argArray_t * - * Pointer to argument array that can be used in other - * functions that accept it as an argument - * == (argArray_t *)NULL - error - * NOTE: you must call e_free_args() when the returned argument array is - * no longer needed so that all storage used can be freed up. - */ - -argArray_t * -e_new_args(int initialCount) -{ - argArray_t *aa; - - /* allocate new argument array structure */ - - aa = (argArray_t *)calloc(1, sizeof (argArray_t)); - if (aa == (argArray_t *)NULL) { - progerr(ERR_MALLOC, strerror(errno), sizeof (argArray_t), - "<argArray_t>"); - return ((argArray_t *)NULL); - } - - /* allocate initial argument array */ - - aa->_aaArgs = (char **)calloc(initialCount+1, sizeof (char *)); - if (aa->_aaArgs == (char **)NULL) { - progerr(ERR_MALLOC, strerror(errno), - (initialCount+1)*sizeof (char *), "<char **>"); - return ((argArray_t *)NULL); - } - - /* initialize argument indexes */ - - aa->_aaNumArgs = 0; - aa->_aaMaxArgs = initialCount; - - return (aa); -} - -/* - * Name: e_add_arg - * Description: add new argument to argument array for use in exec() calls - * Arguments: a_args - [RO, *RW] - (argArray_t *) - * Pointer to argument array (previously allocated via - * a call to e_new_args) to add the argument to - * a_format - [RO, *RO] - (char *) - * Pointer to "printf" style format argument - * ... - [RO, *RO] - (varies) - * Arguments as appropriate for format statement - * Returns: boolean_t - * B_TRUE - success - * B_FALSE - failure - * Examples: - * - to add an argument that specifies a file descriptor: - * int fd; - * e_add_arg(aa, "/proc/self/fd/%d", fd); - * - to add a flag or other known text: - * e_add_arg(aa, "-s") - * - to add random text: - * char *random_text; - * e_add_arg(aa, "%s", random_text); - */ - -/*PRINTFLIKE2*/ -boolean_t -e_add_arg(argArray_t *a_args, char *a_format, ...) -{ - char *rstr = (char *)NULL; - char bfr[MAX_CANON]; - size_t vres = 0; - va_list ap; - - /* - * double argument array if array is full - */ - - if (a_args->_aaNumArgs >= a_args->_aaMaxArgs) { - int newMax; - char **newArgs; - - newMax = a_args->_aaMaxArgs * 2; - newArgs = (char **)realloc(a_args->_aaArgs, - (newMax+1) * sizeof (char *)); - if (newArgs == (char **)NULL) { - progerr(ERR_MALLOC, strerror(errno), - ((newMax+1) * sizeof (char *)), "<char **>"); - return (B_FALSE); - } - a_args->_aaArgs = newArgs; - a_args->_aaMaxArgs = newMax; - } - - /* determine size of argument to add to list */ - - va_start(ap, a_format); - vres = vsnprintf(bfr, sizeof (bfr), a_format, ap); - va_end(ap); - - /* if it fit in the built in buffer, use that */ - if (vres < sizeof (bfr)) { - /* dup text already generated in bfr */ - rstr = strdup(bfr); - if (rstr == (char *)NULL) { - progerr(ERR_MALLOC, strerror(errno), vres+2, - "<char *>"); - return (B_FALSE); - } - } else { - /* allocate space for argument to add */ - - rstr = (char *)malloc(vres+2); - if (rstr == (char *)NULL) { - progerr(ERR_MALLOC, strerror(errno), vres+2, - "<char *>"); - return (B_FALSE); - } - - /* generate argument to add */ - - va_start(ap, a_format); - vres = vsnprintf(rstr, vres+1, a_format, ap); - va_end(ap); - } - - /* add argument to the end of the argument array */ - - a_args->_aaArgs[a_args->_aaNumArgs++] = rstr; - a_args->_aaArgs[a_args->_aaNumArgs] = (char *)NULL; - - return (B_TRUE); -} - -/* - * Name: e_get_argv - * Description: return (char **)argv pointer from argument array - * Arguments: a_args - [RO, *RW] - (argArray_t *) - * Pointer to argument array (previously allocated via - * a call to e_new_args) to return argv pointer for - * Returns: char ** - * Pointer to (char **)argv pointer suitable for use - * in an exec*() call - * NOTE: the actual character array is always terminated with a (char *)NULL - */ - -char ** -e_get_argv(argArray_t *a_args) -{ - return (a_args->_aaArgs); -} - -/* - * Name: e_get_argc - * Description: return (int) argc count from argument array - * Arguments: a_args - [RO, *RW] - (argArray_t *) - * Pointer to argument array (previously allocated via - * a call to e_new_args) to return argc count for - * Returns: int - * Count of the number of arguments in the argument array - * suitable for use in an exec*() call - */ - -int -e_get_argc(argArray_t *a_args) -{ - return (a_args->_aaNumArgs); -} - -/* - * Name: e_free_args - * Description: free all storage contained in an argument array previously - * allocated by a call to e_new_args - * Arguments: a_args - [RO, *RW] - (argArray_t *) - * Pointer to argument array (previously allocated via - * a call to e_new_args) to free - * Returns: void - * NOTE: preserves errno (usually called right after e_execCmd*()) - */ - -void -e_free_args(argArray_t *a_args) -{ - int i; - int lerrno = errno; - - /* free all arguments in the argument array */ - - for (i = (a_args->_aaNumArgs-1); i >= 0; i--) { - (void) free(a_args->_aaArgs[i]); - a_args->_aaArgs[i] = (char *)NULL; - } - - /* free argument array */ - - (void) free(a_args->_aaArgs); - - /* free argument array structure */ - - (void) free(a_args); - - /* restore errno */ - - errno = lerrno; -} diff --git a/usr/src/lib/libpkg/common/tputcfent.c b/usr/src/lib/libpkg/common/tputcfent.c index 492f0335af..11601ded9e 100644 --- a/usr/src/lib/libpkg/common/tputcfent.c +++ b/usr/src/lib/libpkg/common/tputcfent.c @@ -95,14 +95,14 @@ tputcfent(struct cfent *ept, FILE *fp) (void) fprintf(fp, pkg_gt("Major device number: %s\n"), MSG_INVALID); else - (void) fprintf(fp, pkg_gt("Major device number: %d\n"), + (void) fprintf(fp, pkg_gt("Major device number: %ld\n"), ept->ainfo.major); if (ept->ainfo.minor == BADMINOR) (void) fprintf(fp, pkg_gt("Minor device number: %s\n"), MSG_INVALID); else - (void) fprintf(fp, pkg_gt("Minor device number: %d\n"), + (void) fprintf(fp, pkg_gt("Minor device number: %ld\n"), ept->ainfo.minor); break; @@ -131,7 +131,7 @@ tputcfent(struct cfent *ept, FILE *fp) (void) fprintf(fp, pkg_gt("Expected mode: %s\n"), "?"); else - (void) fprintf(fp, pkg_gt("Expected mode: %04o\n"), + (void) fprintf(fp, pkg_gt("Expected mode: %04lo\n"), ept->ainfo.mode); (void) fprintf(fp, pkg_gt("Expected owner: %s\n"), @@ -148,10 +148,10 @@ tputcfent(struct cfent *ept, FILE *fp) ept->cinfo.cksum); if (ept->cinfo.modtime > 0) { timep = localtime(&(ept->cinfo.modtime)); - strftime(timeb, sizeof (timeb), + (void) strftime(timeb, sizeof (timeb), pkg_gt("Expected last modification: %b %d %X %Y\n"), timep); - (void) fprintf(fp, timeb); + (void) fputs(timeb, fp); } else (void) fprintf(fp, pkg_gt("Expected last modification: ?\n")); diff --git a/usr/src/lib/libpkg/common/verify.c b/usr/src/lib/libpkg/common/verify.c index c48c5b8c77..3329d9aff2 100644 --- a/usr/src/lib/libpkg/common/verify.c +++ b/usr/src/lib/libpkg/common/verify.c @@ -106,7 +106,6 @@ reperr(char *fmt, ...) ptln = sizeof (theErrBuf); } va_start(ap, fmt); - /* LINTED variable format specifier to vsnprintf() */ (void) vsnprintf(pt, ptln, fmt, ap); va_end(ap); } @@ -421,7 +420,7 @@ averify(int fix, char *ftype, char *path, struct ainfo *ainfo) /* Get copy of the current working directory */ if (getcwd(cwd, MAXPATHLEN) == NULL) { - reperr(pkg_gt(ERR_GETWD), ainfo->local); + reperr(pkg_gt(ERR_GETWD)); return (VE_FAIL); } @@ -434,7 +433,7 @@ averify(int fix, char *ftype, char *path, struct ainfo *ainfo) if (c) { /* bugid 4247895 */ if (strcmp(cd, c) == 0) - strcpy(cd, "/"); + (void) strcpy(cd, "/"); else *c = NULL; @@ -454,7 +453,7 @@ averify(int fix, char *ftype, char *path, struct ainfo *ainfo) * directory. */ if (!isdir(ainfo->local)) { - chdir(cwd); + (void) chdir(cwd); reperr(pkg_gt(ERR_LINKISDIR), ainfo->local); return (VE_FAIL); @@ -464,7 +463,7 @@ averify(int fix, char *ftype, char *path, struct ainfo *ainfo) return (VE_FAIL); if (link(ainfo->local, path)) { - chdir(cwd); + (void) chdir(cwd); reperr(pkg_gt(ERR_LINKFAIL), ainfo->local); return (VE_FAIL); @@ -660,11 +659,7 @@ averify(int fix, char *ftype, char *path, struct ainfo *ainfo) } if (mknod(path, ainfo->mode | S_IFCHR, -#ifdef SUNOS41 - makedev(ainfo->xmajor, ainfo->xminor)) || -#else makedev(ainfo->major, ainfo->minor)) || -#endif (stat(path, &status) < 0)) { reperr(pkg_gt(ERR_CDEVFAIL)); return (VE_FAIL); @@ -694,11 +689,7 @@ averify(int fix, char *ftype, char *path, struct ainfo *ainfo) } if (mknod(path, ainfo->mode | S_IFBLK, -#ifdef SUNOS41 - makedev(ainfo->xmajor, ainfo->xminor)) || -#else makedev(ainfo->major, ainfo->minor)) || -#endif (stat(path, &status) < 0)) { reperr(pkg_gt(ERR_BDEVFAIL)); return (VE_FAIL); @@ -723,19 +714,6 @@ averify(int fix, char *ftype, char *path, struct ainfo *ainfo) retcode = 0; if ((myftype == 'c') || (myftype == 'b')) { -#ifdef SUNOS41 - if (setval || (ainfo->xmajor < 0)) - ainfo->xmajor = ((status.st_rdev>>8)&0377); - if (setval || (ainfo->xminor < 0)) - ainfo->xminor = (status.st_rdev&0377); - /* check major & minor */ - if (status.st_rdev != makedev(ainfo->xmajor, ainfo->xminor)) { - reperr(pkg_gt(ERR_MAJMIN), ainfo->xmajor, - ainfo->xminor, - (status.st_rdev>>8)&0377, status.st_rdev&0377); - retcode = VE_CONT; - } -#else if (setval || (ainfo->major == BADMAJOR)) ainfo->major = major(status.st_rdev); if (setval || (ainfo->minor == BADMINOR)) @@ -746,7 +724,6 @@ averify(int fix, char *ftype, char *path, struct ainfo *ainfo) major(status.st_rdev), minor(status.st_rdev)); retcode = VE_CONT; } -#endif } /* compare specified mode w/ actual mode excluding sticky bit */ diff --git a/usr/src/lib/libpkg/common/vfpops.c b/usr/src/lib/libpkg/common/vfpops.c index a4e6e54112..4c4b49c47c 100644 --- a/usr/src/lib/libpkg/common/vfpops.c +++ b/usr/src/lib/libpkg/common/vfpops.c @@ -911,7 +911,7 @@ vfpCheckpointFile(VFP_T **r_cpVfp, VFP_T **a_vfp, char *a_path) /* copy contents of VFP to checkpoint to checkpointed VFP */ - memcpy(vfp, avfp, sizeof (VFP_T)); + (void) memcpy(vfp, avfp, sizeof (VFP_T)); /* free contents of VFP to checkpoint */ |