svn commit: r354666 - head/usr.sbin/sesutil

Alan Somers asomers at FreeBSD.org
Tue Nov 12 23:57:58 UTC 2019


Author: asomers
Date: Tue Nov 12 23:57:57 2019
New Revision: 354666
URL: https://svnweb.freebsd.org/changeset/base/354666

Log:
  sesutil: fix another memory leak
  
  Instead of calloc()ing (and forgetting to free) in a tight loop, just put
  this small array on the stack.
  
  Reported by:	Coverity
  Coverity CID:	1331665
  MFC after:	2 weeks
  Sponsored by:	Axcient

Modified:
  head/usr.sbin/sesutil/sesutil.c

Modified: head/usr.sbin/sesutil/sesutil.c
==============================================================================
--- head/usr.sbin/sesutil/sesutil.c	Tue Nov 12 23:09:55 2019	(r354665)
+++ head/usr.sbin/sesutil/sesutil.c	Tue Nov 12 23:57:57 2019	(r354666)
@@ -261,19 +261,19 @@ sesled(int argc, char **argv, bool setfault)
 			break;
 		}
 		for (j = 0; j < nobj; j++) {
+			const int devnames_size = 128;
+			char devnames[devnames_size];
+
 			if (all) {
 				do_led(fd, objp[j].elm_idx, objp[j].elm_type,
 				    onoff, setfault);
 				continue;
 			}
 			memset(&objdn, 0, sizeof(objdn));
+			memset(devnames, 0, devnames_size);
 			objdn.elm_idx = objp[j].elm_idx;
-			objdn.elm_names_size = 128;
-			objdn.elm_devnames = calloc(128, sizeof(char));
-			if (objdn.elm_devnames == NULL) {
-				close(fd);
-				xo_err(EXIT_FAILURE, "calloc()");
-			}
+			objdn.elm_names_size = devnames_size;
+			objdn.elm_devnames = devnames;
 			if (ioctl(fd, ENCIOC_GETELMDEVNAMES,
 			    (caddr_t) &objdn) <0) {
 				continue;


More information about the svn-src-head mailing list