On Saturday, May 04, 2013 02:54:20 PM Mikolaj Golub wrote:
> On Fri, May 03, 2013 at 09:11:57PM +0000, John Baldwin wrote:
> > +static int
> > +procstat_get_sem_info_kvm(kvm_t *kd, struct filestat *fst,
> > +    struct semstat *sem, char *errbuf)
> > +{
> > +   struct ksem ksem;
> > +   void *ksemp;
> > +   char *path;
> > +   int i;
> > +
> > +   assert(kd);
> > +   assert(sem);
> > +   assert(fst);
> > +   bzero(sem, sizeof(*sem));
> > +   ksemp = fst->fs_typedep;
> > +   if (ksemp == NULL)
> > +           goto fail;
> > +   if (!kvm_read_all(kd, (unsigned long)ksemp, &ksem,
> > +       sizeof(struct ksem))) {
> > +           warnx("can't read ksem at %p", (void *)ksemp);
> > +           goto fail;
> > +   }
> > +   sem->mode = S_IFREG | ksem.ks_mode;
> > +   sem->value = ksem.ks_value;
> > +   if (fst->fs_path == NULL && ksem.ks_path != NULL) {
> > +           path = malloc(MAXPATHLEN);
> > +           for (i = 0; i < MAXPATHLEN - 1; i++) {
> > +                   if (!kvm_read_all(kd, (unsigned long)ksem.ks_path + i,
> > +                       path + i, 1))
> > +                           break;
> > +                   if (path[i] == '\0')
> > +                           break;
> > +           }
> > +           path[i] = '\0';
> > +           if (i == 0)
> > +                   free(path);
> > +           else
> > +                   fst->fs_path = path;
> > +   }
> > +   return (0);
> > +
> > +fail:
> > +   snprintf(errbuf, _POSIX2_LINE_MAX, "error");
> > +   return (1);
> > +}
> 
> I would like to make errbuf optional (for all libprocstat functions
> that provide it) adding a check before printing to errbuf:
> 
>   if (errbuf != NULL)
>       snprintf(errbuf, ...
> 
> It looks like there are callers who are not interested in errbuf
> content. E.g. currently procstat(1) passes NULL when calling functions
> that require errbuf, namely procstat_get_socket_info and
> procstat_get_vnode_info, potentially crashing here if an error occurs.
> 
> Do you (anyone) have objections?

Oh, no not at all.  I just used the shm_info version as my template, so it 
probably has the same issue as well.

-- 
John Baldwin
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to