Author: gad Date: Mon Mar 20 22:36:28 2017 New Revision: 315655 URL: https://svnweb.freebsd.org/changeset/base/315655
Log: Fixes to chkprintcap: - Check the return from a call to malloc() in skim_printcap(), and return a NULL if that fails. - Fix a small memory leak in main() that happens if skim_printcap() returns an error, including the new error-return of NULL. Submitted by: Tom Rix <t...@juniper.net> Reviewed by: pfg, ngie MFC after: 4 weeks Sponsored by: Dell EMC Isilon, Juniper Differential Revision: D9954, D9982 Modified: head/usr.sbin/lpr/chkprintcap/chkprintcap.c head/usr.sbin/lpr/chkprintcap/skimprintcap.c Modified: head/usr.sbin/lpr/chkprintcap/chkprintcap.c ============================================================================== --- head/usr.sbin/lpr/chkprintcap/chkprintcap.c Mon Mar 20 22:33:22 2017 (r315654) +++ head/usr.sbin/lpr/chkprintcap/chkprintcap.c Mon Mar 20 22:36:28 2017 (r315655) @@ -113,8 +113,13 @@ main(int argc, char **argv) * the printcap file. */ skres = skim_printcap(pcap_fname, verbosity); - if (skres->fatalerr) - return (skres->fatalerr); + if (skres == NULL) { + problems = 1; + goto main_ret; + } else if (skres->fatalerr) { + problems = skres->fatalerr; + goto main_ret; + } /* * Now use the standard capability-db routines to check the values @@ -156,6 +161,9 @@ next: warnx("WARNING: but only found %d queues to process!", queuecnt); } + +main_ret: + free(pcap_fname); return (problems); } Modified: head/usr.sbin/lpr/chkprintcap/skimprintcap.c ============================================================================== --- head/usr.sbin/lpr/chkprintcap/skimprintcap.c Mon Mar 20 22:33:22 2017 (r315654) +++ head/usr.sbin/lpr/chkprintcap/skimprintcap.c Mon Mar 20 22:36:28 2017 (r315655) @@ -82,6 +82,8 @@ skim_printcap(const char *pcap_fname, in enum {CMNT_LINE, ENTRY_LINE, TAB_LINE, TABERR_LINE} is_type, had_type; skinf = malloc(sizeof(struct skiminfo)); + if (skinf == NULL) + return (NULL); memset(skinf, 0, sizeof(struct skiminfo)); pc_file = fopen(pcap_fname, "r"); _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"