Author: ngie
Date: Mon Nov  2 08:43:15 2015
New Revision: 290264
URL: https://svnweb.freebsd.org/changeset/base/290264

Log:
  Limit isoLevel to 1 and 2 to avoid segfaulting when isoLevel is set to 3 by
  dereferencing a NULL function pointer
  
  Add some asserts to ensure that isolevel is always either 1 or 2.
  
  PR: 203645
  Reported by: Thomas Schmitt <scdbac...@gmx.net>
  MFC after: 1 week
  Sponsored by: EMC / Isilon Storage Division

Modified:
  head/usr.sbin/makefs/cd9660.c

Modified: head/usr.sbin/makefs/cd9660.c
==============================================================================
--- head/usr.sbin/makefs/cd9660.c       Mon Nov  2 07:59:17 2015        
(r290263)
+++ head/usr.sbin/makefs/cd9660.c       Mon Nov  2 08:43:15 2015        
(r290264)
@@ -296,8 +296,8 @@ cd9660_parse_opts(const char *option, fs
        int     rv;
        /* Set up allowed options - integer options ONLY */
        option_t cd9660_options[] = {
-               { "l", &diskStructure.isoLevel, 1, 3, "ISO Level" },
-               { "isolevel", &diskStructure.isoLevel, 1, 3, "ISO Level" },
+               { "l", &diskStructure.isoLevel, 1, 2, "ISO Level" },
+               { "isolevel", &diskStructure.isoLevel, 1, 2, "ISO Level" },
                { "verbose",  &diskStructure.verbose_level, 0, 2,
                  "Turns on verbose output" },
                { "v", &diskStructure.verbose_level, 0 , 2,
@@ -1055,6 +1055,7 @@ cd9660_rename_filename(cd9660node *iter,
        if (diskStructure.verbose_level > 0)
                printf("Rename_filename called\n");
 
+       assert(1 <= diskStructure.isoLevel && diskStructure.isoLevel <= 2);
        /* TODO : A LOT of chanes regarding 8.3 filenames */
        if (diskStructure.isoLevel == 1)
                maxlength = 8;
@@ -1730,6 +1731,7 @@ cd9660_joliet_convert_filename(const cha
 static int
 cd9660_convert_filename(const char *oldname, char *newname, int is_file)
 {
+       assert(1 <= diskStructure.isoLevel && diskStructure.isoLevel <= 2);
        /* NEW */
        cd9660_filename_conversion_functor conversion_function = 0;
        if (diskStructure.isoLevel == 1)
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to