doc/share/security/patches/SA-04:17/procfs5.patch
Bjoern A. Zeeb 3571e53040 Import FreeBSD Security Advisories and Errata Notices, as well as their
patches for easier mirroring, to eliminate a special copy, to make
www.freebsd.org/security a full copy of security.freebsd.org and be
eventually be the same.

For now files are just sitting there.   The symlinks are missing.

Discussed on:	www (repository location)
Discussed with:	simon (so)
2012-08-15 06:19:40 +00:00

76 lines
2.1 KiB
Diff

Index: sys/compat/linprocfs/linprocfs.c
===================================================================
RCS file: /home/ncvs/src/sys/compat/linprocfs/linprocfs.c,v
retrieving revision 1.84
diff -u -r1.84 linprocfs.c
--- sys/compat/linprocfs/linprocfs.c 16 Aug 2004 08:19:18 -0000 1.84
+++ sys/compat/linprocfs/linprocfs.c 27 Nov 2004 12:28:00 -0000
@@ -769,6 +769,7 @@
linprocfs_doproccmdline(PFS_FILL_ARGS)
{
struct ps_strings pstr;
+ char **ps_argvstr;
int error, i;
/*
@@ -794,10 +795,21 @@
sizeof(pstr));
if (error)
return (error);
+ if (pstr.ps_nargvstr > ARG_MAX)
+ return (E2BIG);
+ ps_argvstr = malloc(pstr.ps_nargvstr * sizeof(char *),
+ M_TEMP, M_WAITOK);
+ error = copyin((void *)pstr.ps_argvstr, ps_argvstr,
+ pstr.ps_nargvstr * sizeof(char *));
+ if (error) {
+ free(ps_argvstr, M_TEMP);
+ return (error);
+ }
for (i = 0; i < pstr.ps_nargvstr; i++) {
- sbuf_copyin(sb, pstr.ps_argvstr[i], 0);
+ sbuf_copyin(sb, ps_argvstr[i], 0);
sbuf_printf(sb, "%c", '\0');
}
+ free(ps_argvstr, M_TEMP);
}
return (0);
Index: sys/fs/procfs/procfs_status.c
===================================================================
RCS file: /home/ncvs/src/sys/fs/procfs/procfs_status.c,v
retrieving revision 1.53
diff -u -r1.53 procfs_status.c
--- sys/fs/procfs/procfs_status.c 5 Oct 2004 18:51:10 -0000 1.53
+++ sys/fs/procfs/procfs_status.c 27 Nov 2004 12:28:00 -0000
@@ -173,6 +173,7 @@
procfs_doproccmdline(PFS_FILL_ARGS)
{
struct ps_strings pstr;
+ char **ps_argvstr;
int error, i;
/*
@@ -199,10 +200,21 @@
sizeof(pstr));
if (error)
return (error);
+ if (pstr.ps_nargvstr > ARG_MAX)
+ return (E2BIG);
+ ps_argvstr = malloc(pstr.ps_nargvstr * sizeof(char *),
+ M_TEMP, M_WAITOK);
+ error = copyin((void *)pstr.ps_argvstr, ps_argvstr,
+ pstr.ps_nargvstr * sizeof(char *));
+ if (error) {
+ free(ps_argvstr, M_TEMP);
+ return (error);
+ }
for (i = 0; i < pstr.ps_nargvstr; i++) {
- sbuf_copyin(sb, pstr.ps_argvstr[i], 0);
+ sbuf_copyin(sb, ps_argvstr[i], 0);
sbuf_printf(sb, "%c", '\0');
}
+ free(ps_argvstr, M_TEMP);
}
return (0);