Author: marcel
Date: Mon May 28 16:33:58 2012
New Revision: 236188
URL: http://svn.freebsd.org/changeset/base/236188

Log:
  Catch a corner case where ssegs could be 0 and thus i would be 0 and
  we index suinfo out of bounds (i.e. -1).
  
  Approved by:  gber

Modified:
  head/sys/fs/nandfs/nandfs_cleaner.c

Modified: head/sys/fs/nandfs/nandfs_cleaner.c
==============================================================================
--- head/sys/fs/nandfs/nandfs_cleaner.c Mon May 28 15:34:55 2012        
(r236187)
+++ head/sys/fs/nandfs/nandfs_cleaner.c Mon May 28 16:33:58 2012        
(r236188)
@@ -310,23 +310,22 @@ retry:
                nandfs_error("%s:%d", __FILE__, __LINE__);
                goto out;
        }
-
        if (ssegs == 0 && *rseg != 0) {
                *rseg = 0;
                goto retry;
        }
+       if (ssegs > 0) {
+               print_suinfo(suinfo, ssegs);
 
-       print_suinfo(suinfo, ssegs);
-
-       for (i = 0; i < ssegs; i++) {
-               (**segpp) = suinfo[i].nsi_num;
-               (*segpp)++;
+               for (i = 0; i < ssegs; i++) {
+                       (**segpp) = suinfo[i].nsi_num;
+                       (*segpp)++;
+               }
+               *rseg = suinfo[i - 1].nsi_num + 1;
        }
 
-       *rseg = suinfo[i - 1].nsi_num + 1;
 out:
        free(suinfo, M_NANDFSTEMP);
-
        return (error);
 }
 
_______________________________________________
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