Walt Wimer noticed that mknod couldn't handle major or minor > 255. Now our
authorRob Landley <rob@landley.net>
Mon, 6 Mar 2006 19:31:39 +0000 (19:31 -0000)
committerRob Landley <rob@landley.net>
Mon, 6 Mar 2006 19:31:39 +0000 (19:31 -0000)
limit checking autodetects what the system supports (at compile time).

coreutils/mknod.c

index 7b2467b8fa150f368222648843c1a798200071d3..b6e85272daf795bd9e7a268af9c67017f5a98456 100644 (file)
@@ -47,8 +47,10 @@ extern int mknod_main(int argc, char **argv)
 
                dev = 0;
                if ((*name != 'p') && ((argc -= 2) == 2)) {
-                       dev = (bb_xgetularg10_bnd(argv[2], 0, 255) << 8)
-                               + bb_xgetularg10_bnd(argv[3], 0, 255);
+                       /* Autodetect what the system supports; thexe macros should
+                        * optimize out to two constants. */
+                       dev = makedev(bb_xgetularg10_bnd(argv[2], 0, major(UINT_MAX)),
+                                                 bb_xgetularg10_bnd(argv[3], 0, minor(UINT_MAX)));
                }
 
                if (argc == 2) {