diff options
author | Ken Smith <kensmith@FreeBSD.org> | 2007-12-24 06:42:35 +0000 |
---|---|---|
committer | Ken Smith <kensmith@FreeBSD.org> | 2007-12-24 06:42:35 +0000 |
commit | d92b0d8d4f5ed01c0cfb2d30faa60f96e5188f70 (patch) | |
tree | 30261c8dfdb1ba447aae19153ff87aaea8790a36 | |
parent | 6e402d3117bbb3cc4f62678efc6168ff65be69e3 (diff) |
MFC v1.116:
> For the INDEX file to be used on disc1 of the 7.0-RELEASE the longest
> "build dependencies" field is 5,108 characters which overflows the
> length of the junk buffer by a teeny bit. This whole section needs
> much more error checking but for now just completely ignore stuff
> we have no interest in instead of copying it to someplace we don't
> use in the process.
Approved by: re (bmah)
Notes
Notes:
svn path=/releng/6.3/; revision=174886
-rw-r--r-- | usr.sbin/sysinstall/index.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/usr.sbin/sysinstall/index.c b/usr.sbin/sysinstall/index.c index 02c34b0b38cb..967eb87938ce 100644 --- a/usr.sbin/sysinstall/index.c +++ b/usr.sbin/sysinstall/index.c @@ -270,6 +270,18 @@ copy_to_sep(char *to, char *from, int sep) } static int +skip_to_sep(char *from, int sep) +{ + char *tok; + + tok = strchr(from, sep); + if (!tok) + return 0; + *tok = '\0'; + return tok + 1 - from; +} + +static int readline(FILE *fp, char *buf, int max) { int rv, i = 0; @@ -307,21 +319,21 @@ index_parse(FILE *fp, char *name, char *pathto, char *prefix, char *comment, cha cp += copy_to_sep(descr, cp, '|'); /* path to pkg-descr */ cp += copy_to_sep(maint, cp, '|'); /* maintainer */ cp += copy_to_sep(cats, cp, '|'); /* categories */ - cp += copy_to_sep(junk, cp, '|'); /* build deps - not used */ + cp += skip_to_sep(cp, '|'); /* build deps - not used */ cp += copy_to_sep(rdeps, cp, '|'); /* run deps */ if (index(cp, '|')) - cp += copy_to_sep(junk, cp, '|'); /* url - not used */ + cp += skip_to_sep(cp, '|'); /* url - not used */ else { strncpy(junk, cp, 1023); *volume = 0; return 0; } if (index(cp, '|')) - cp += copy_to_sep(junk, cp, '|'); /* extract deps - not used */ + cp += skip_to_sep(cp, '|'); /* extract deps - not used */ if (index(cp, '|')) - cp += copy_to_sep(junk, cp, '|'); /* patch deps - not used */ + cp += skip_to_sep(cp, '|'); /* patch deps - not used */ if (index(cp, '|')) - cp += copy_to_sep(junk, cp, '|'); /* fetch deps - not used */ + cp += skip_to_sep(cp, '|'); /* fetch deps - not used */ if (index(cp, '|')) cp += copy_to_sep(volstr, cp, '|'); /* media volume */ else { |