Module Name: src Committed By: roy Date: Fri Jul 10 02:41:39 UTC 2009
Modified Files: src/sys/nfs: nfs_bootdhcp.c Log Message: Protect against short IP addresses in the DHCP message. To generate a diff of this commit: cvs rdiff -u -r1.49 -r1.50 src/sys/nfs/nfs_bootdhcp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/nfs/nfs_bootdhcp.c diff -u src/sys/nfs/nfs_bootdhcp.c:1.49 src/sys/nfs/nfs_bootdhcp.c:1.50 --- src/sys/nfs/nfs_bootdhcp.c:1.49 Fri Jul 10 01:29:54 2009 +++ src/sys/nfs/nfs_bootdhcp.c Fri Jul 10 02:41:39 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: nfs_bootdhcp.c,v 1.49 2009/07/10 01:29:54 roy Exp $ */ +/* $NetBSD: nfs_bootdhcp.c,v 1.50 2009/07/10 02:41:39 roy Exp $ */ /*- * Copyright (c) 1995, 1997 The NetBSD Foundation, Inc. @@ -44,7 +44,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: nfs_bootdhcp.c,v 1.49 2009/07/10 01:29:54 roy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: nfs_bootdhcp.c,v 1.50 2009/07/10 02:41:39 roy Exp $"); #ifdef _KERNEL_OPT #include "opt_nfs_boot.h" @@ -747,15 +747,23 @@ #endif switch (tag) { case TAG_SUBNET_MASK: + if (len < 4) { + printf("nfs_boot: subnet mask < 4 bytes\n"); + break; + } memcpy(&netmask, p, 4); break; case TAG_GATEWAY: /* Routers */ + if (len < 4) { + printf("nfs_boot: routers < 4 bytes\n"); + break; + } memcpy(&gateway, p, 4); break; case TAG_HOST_NAME: if (len >= sizeof(hostname)) { - printf("nfs_boot: host name >= %lu bytes", + printf("nfs_boot: host name >= %lu bytes\n", (u_long)sizeof(hostname)); break; } @@ -764,7 +772,7 @@ break; case TAG_DOMAIN_NAME: if (len >= sizeof(domainname)) { - printf("nfs_boot: domain name >= %lu bytes", + printf("nfs_boot: domain name >= %lu bytes\n", (u_long)sizeof(domainname)); break; } @@ -774,7 +782,7 @@ case TAG_ROOT_PATH: /* Leave some room for the server name. */ if (len >= (MNAMELEN-10)) { - printf("nfs_boot: rootpath >=%d bytes", + printf("nfs_boot: rootpath >= %d bytes\n", (MNAMELEN-10)); break; } @@ -783,6 +791,10 @@ break; case TAG_SWAP_SERVER: /* override NFS server address */ + if (len < 4) { + printf("nfs_boot: swap server < 4 bytes\n"); + break; + } memcpy(&rootserver, p, 4); break; #ifdef NFS_BOOT_DHCP