]> Zhao Yanbai Git Server - minix.git/commitdiff
isofs: fixes for coverity defects
authorThomas Veerman <thomas@minix3.org>
Thu, 26 Jul 2012 15:16:50 +0000 (15:16 +0000)
committerThomas Veerman <thomas@minix3.org>
Mon, 30 Jul 2012 09:44:58 +0000 (09:44 +0000)
.use safe string copy functions
.CD-ROM are always mounted read-only

servers/iso9660fs/mount.c
servers/iso9660fs/path.c
servers/iso9660fs/read.c

index f1db6db75e40d68101f2fd878676fab4b9205402..3d19922bad01f86a869b859dd96fb4a5ba53bb87 100644 (file)
@@ -13,12 +13,10 @@ int fs_readsuper() {
   cp_grant_id_t label_gid;
   size_t label_len;
   int r = OK;
-  int readonly;
 
   fs_dev    = fs_m_in.REQ_DEV;
   label_gid = fs_m_in.REQ_GRANT;
   label_len = fs_m_in.REQ_PATH_LEN;
-  readonly  = 1;                       /* Always mount devices read only. */
 
   if (label_len > sizeof(fs_dev_label)) 
        return(EINVAL);
@@ -33,8 +31,8 @@ int fs_readsuper() {
   /* Map the driver label for this major */
   bdev_driver(fs_dev, fs_dev_label);
 
-  /* Open the device the file system lives on */
-  if (bdev_open(fs_dev, readonly ? R_BIT : (R_BIT|W_BIT)) != OK) {
+  /* Open the device the file system lives on in read only mode */
+  if (bdev_open(fs_dev, R_BIT) != OK) {
         return(EINVAL);
   }
 
index cd4c4c0b9442982cc8d994c292d2a0b7119d3562..0455564d3fee63aba2166f9026a2902b55efdf1f 100644 (file)
@@ -223,7 +223,7 @@ size_t *offsetp;
       while(cp[0] == '/')
        cp++;
       if (cp[0] == '\0') {
-       strcpy(string, ".");
+       strlcpy(string, ".", NAME_MAX + 1);
        ncp = cp;
       }
       else
@@ -360,7 +360,7 @@ char string[NAME_MAX+1];    /* component extracted from 'old_name' */
   if (len == 0)
   {
        /* Return "." */
-       strcpy(string, ".");
+       strlcpy(string, ".", NAME_MAX + 1);
   }
   else
   {
index c0bf7fe6fc4144cc3b0f5b85efa94f82beb8f8ad..c9064ba5d2e25274fc6b8951296da5ff3bbf2247 100644 (file)
@@ -188,8 +188,10 @@ int fs_getdents(void) {
                        done = TRUE;
                        release_dir_record(dir_tmp);
                } else {        /* The dir record is valid. Copy data... */
-                       if (dir_tmp->file_id[0] == 0) strcpy(name,".");
-                       else if (dir_tmp->file_id[0] == 1) strcpy(name,"..");
+                       if (dir_tmp->file_id[0] == 0)
+                               strlcpy(name, ".", NAME_MAX + 1);
+                       else if (dir_tmp->file_id[0] == 1)
+                               strlcpy(name, "..", NAME_MAX + 1);
                        else {
                                /* Extract the name from the field file_id */
                                strncpy(name, dir_tmp->file_id,
@@ -211,7 +213,7 @@ int fs_getdents(void) {
                                continue;
                        }
 
-                       strcpy(name_old,name);
+                       strlcpy(name_old, name, NAME_MAX + 1);
 
                        /* Compute the length of the name */
                        cp = memchr(name, '\0', NAME_MAX);