Port-cats archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: HEADS UP: Merge the gehenna-devsw branch.



Izumi Tsutsui <tsutsui%ceres.dti.ne.jp@localhost> wrote:
>> I have merged the gehenna-devsw branch into the trunk.
>
>I've updated my CATS' kernel to 1.6H, and it no longer
>recognizes boot device.
>
>It seems that devsw_name2blk() (which is called from
>cats/autoconf.c:get_device()) copies wrong strings into
>devname arg for the device name. Is the attached patch correct?

it seems to be still wrong. how about this?

--- MAEKAWA Masahide
--- Key fingerprint = BC5E D8CB 816C 2CB5 8560  FDE3 6CB8 BF5D 8D50 F2EE

--- subr_devsw.c.orig   Sun Sep 15 22:09:24 2002
+++ subr_devsw.c        Sun Sep 15 22:09:27 2002
@@ -373,7 +373,7 @@
 devsw_name2blk(const char *name, char *devname, size_t devnamelen)
 {
        struct devsw_conv *conv;
-       int bmajor, i;
+       int bmajor, len, i;
 
        if (name == NULL)
                return (-1);
@@ -382,7 +382,8 @@
                conv = &devsw_conv[i];
                if (conv->d_name == NULL)
                        continue;
-               if (strncmp(conv->d_name, name, strlen(conv->d_name)) != 0)
+               len = strlen(conv->d_name);
+               if (strncmp(conv->d_name, name, len) != 0)
                        continue;
                bmajor = conv->d_bmajor;
                if (bmajor < 0 || bmajor >= max_bdevsws ||
@@ -390,11 +391,11 @@
                        return (-1);
                if (devname != NULL) {
 #ifdef DEVSW_DEBUG
-                       if (strlen(conv->d_name) >= devnamelen)
+                       if (len >= devnamelen)
                                printf("devsw_name2blk: too short buffer");
 #endif /* DEVSW_DEBUG */
-                       strncpy(devname, name, devnamelen);
-                       devname[devnamelen - 1] = '\0';
+                       strncpy(devname, conv->d_name, len);
+                       devname[len] = '\0';
                }
                return (bmajor);
        }



Home | Main Index | Thread Index | Old Index