svn commit: r278545 - head/sys/kern

Rui Paulo rpaulo at FreeBSD.org
Wed Feb 11 00:58:17 UTC 2015


Author: rpaulo
Date: Wed Feb 11 00:58:15 2015
New Revision: 278545
URL: https://svnweb.freebsd.org/changeset/base/278545

Log:
  Restore the data array in coredump(), but use a different style to
  calculate the length.
  
  Requested by:	kib

Modified:
  head/sys/kern/kern_sig.c

Modified: head/sys/kern/kern_sig.c
==============================================================================
--- head/sys/kern/kern_sig.c	Tue Feb 10 23:48:06 2015	(r278544)
+++ head/sys/kern/kern_sig.c	Wed Feb 11 00:58:15 2015	(r278545)
@@ -3261,9 +3261,11 @@ coredump(struct thread *td)
 	void *rl_cookie;
 	off_t limit;
 	int compress;
-	char data[MAXPATHLEN * 2 + 16]; /* space for devctl notification */
+	char *data = NULL;
 	char *fullpath, *freepath = NULL;
 	size_t len;
+	static const char comm_name[] = "comm=";
+	static const char core_name[] = "core=";
 
 #ifdef COMPRESS_USER_CORES
 	compress = compress_user_cores;
@@ -3357,25 +3359,31 @@ close:
 	 */
 	if (coredump_devctl == 0)
 		goto out;
+	len = MAXPATHLEN * 2 + sizeof(comm_name) - 1 +
+	    sizeof(' ') + sizeof(core_name) - 1;
+	data = malloc(len, M_TEMP, M_WAITOK);
+	if (data == NULL)
+		goto out;
 	if (vn_fullpath_global(td, p->p_textvp, &fullpath, &freepath) != 0)
 		goto out;
 	if (!coredump_sanitise_path(fullpath))
 		goto out;
-	snprintf(data, sizeof(data), "comm=%s ", fullpath);
+	snprintf(data, len, "%s%s ", comm_name, fullpath);
 	free(freepath, M_TEMP);
 	freepath = NULL;
 	if (vn_fullpath_global(td, vp, &fullpath, &freepath) != 0)
 		goto out;
 	if (!coredump_sanitise_path(fullpath))
 		goto out;
-	strlcat(data, "core=", sizeof(data));
-	len = strlcat(data, fullpath, sizeof(data));
+	strlcat(data, core_name, len);
+	strlcat(data, fullpath, len);
 	devctl_notify("kernel", "signal", "coredump", data);
 out:
 #ifdef AUDIT
 	audit_proc_coredump(td, name, error);
 #endif
 	free(freepath, M_TEMP);
+	free(data, M_TEMP);
 	free(name, M_TEMP);
 	return (error);
 }


More information about the svn-src-all mailing list