aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Smith <kensmith@FreeBSD.org>2007-12-24 06:42:35 +0000
committerKen Smith <kensmith@FreeBSD.org>2007-12-24 06:42:35 +0000
commitd92b0d8d4f5ed01c0cfb2d30faa60f96e5188f70 (patch)
tree30261c8dfdb1ba447aae19153ff87aaea8790a36
parent6e402d3117bbb3cc4f62678efc6168ff65be69e3 (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.c22
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 {