X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/e5568f75972dfc723778653c11cb6b4dc825716a..91447636331957f3d9b5ca5b508f07c526b0074d:/pexpert/gen/bootargs.c diff --git a/pexpert/gen/bootargs.c b/pexpert/gen/bootargs.c index a3e5e88dd..09272e238 100644 --- a/pexpert/gen/bootargs.c +++ b/pexpert/gen/bootargs.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * @@ -28,10 +28,19 @@ extern int getval(char *s, int *val); #define NUM 0 #define STR 1 -boolean_t +boolean_t PE_parse_boot_arg( - char *arg_string, - void *arg_ptr) + const char *arg_string, + void *arg_ptr) +{ + return PE_parse_boot_argn(arg_string, arg_ptr, -1); +} + +boolean_t +PE_parse_boot_argn( + const char *arg_string, + void *arg_ptr, + int max_len) { char *args; char *cp, c; @@ -78,11 +87,12 @@ PE_parse_boot_arg( goto gotit; } if ('_' == *arg_string) /* Force a string copy if the argument name begins with an underscore */ - { - argstrcpy2 (++cp, (char *)arg_ptr, 16); /* Hack - terminate after 16 characters */ - arg_found = TRUE; - break; - } + { + int hacklen = 16 > max_len ? 16 : max_len; + argstrcpy2 (++cp, (char *)arg_ptr, hacklen); /* Hack - terminate after 16 characters */ + arg_found = TRUE; + break; + } switch (getval(cp, &val)) { case NUM: @@ -90,7 +100,10 @@ PE_parse_boot_arg( arg_found = TRUE; break; case STR: - argstrcpy(++cp, (char *)arg_ptr); + if(max_len > 0) //max_len of 0 performs no copy at all + argstrcpy2(++cp, (char *)arg_ptr, max_len); + else if(max_len == -1) + argstrcpy(++cp, (char *)arg_ptr); arg_found = TRUE; break; }