Author: marcus (doc,ports committer)
Date: Fri Dec 19 06:47:59 2008
New Revision: 186314
URL: http://svn.freebsd.org/changeset/base/186314

Log:
  Initialize the cntp pointer to 0 prior to doing any work so that callers
  don't try to iterate through garbage or NULL memory.  Additionally, return
  NULL instead of 0 on error.
  
  Reviewed by:  peter
  Approved by:  peter

Modified:
  head/lib/libutil/kinfo_getfile.c
  head/lib/libutil/kinfo_getvmmap.c

Modified: head/lib/libutil/kinfo_getfile.c
==============================================================================
--- head/lib/libutil/kinfo_getfile.c    Fri Dec 19 06:34:57 2008        
(r186313)
+++ head/lib/libutil/kinfo_getfile.c    Fri Dec 19 06:47:59 2008        
(r186314)
@@ -19,6 +19,7 @@ kinfo_getfile(pid_t pid, int *cntp)
        char *buf, *bp, *eb;
        struct kinfo_file *kif, *kp, *kf;
 
+       *cntp = 0;
        len = 0;
        mib[0] = CTL_KERN;
        mib[1] = KERN_PROC;
@@ -27,15 +28,15 @@ kinfo_getfile(pid_t pid, int *cntp)
 
        error = sysctl(mib, 4, NULL, &len, NULL, 0);
        if (error)
-               return (0);
+               return (NULL);
        len = len * 4 / 3;
        buf = malloc(len);
        if (buf == NULL)
-               return (0);
+               return (NULL);
        error = sysctl(mib, 4, buf, &len, NULL, 0);
        if (error) {
                free(buf);
-               return (0);
+               return (NULL);
        }
        /* Pass 1: count items */
        cnt = 0;
@@ -50,7 +51,7 @@ kinfo_getfile(pid_t pid, int *cntp)
        kif = calloc(cnt, sizeof(*kif));
        if (kif == NULL) {
                free(buf);
-               return (0);
+               return (NULL);
        }
        bp = buf;
        eb = buf + len;

Modified: head/lib/libutil/kinfo_getvmmap.c
==============================================================================
--- head/lib/libutil/kinfo_getvmmap.c   Fri Dec 19 06:34:57 2008        
(r186313)
+++ head/lib/libutil/kinfo_getvmmap.c   Fri Dec 19 06:47:59 2008        
(r186314)
@@ -19,6 +19,7 @@ kinfo_getvmmap(pid_t pid, int *cntp)
        char *buf, *bp, *eb;
        struct kinfo_vmentry *kiv, *kp, *kv;
 
+       *cntp = 0;
        len = 0;
        mib[0] = CTL_KERN;
        mib[1] = KERN_PROC;
@@ -27,15 +28,15 @@ kinfo_getvmmap(pid_t pid, int *cntp)
 
        error = sysctl(mib, 4, NULL, &len, NULL, 0);
        if (error)
-               return (0);
+               return (NULL);
        len = len * 4 / 3;
        buf = malloc(len);
        if (buf == NULL)
-               return (0);
+               return (NULL);
        error = sysctl(mib, 4, buf, &len, NULL, 0);
        if (error) {
                free(buf);
-               return (0);
+               return (NULL);
        }
        /* Pass 1: count items */
        cnt = 0;
@@ -50,7 +51,7 @@ kinfo_getvmmap(pid_t pid, int *cntp)
        kiv = calloc(cnt, sizeof(*kiv));
        if (kiv == NULL) {
                free(buf);
-               return (0);
+               return (NULL);
        }
        bp = buf;
        eb = buf + len;
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to