>Number:         172715
>Category:       bin
>Synopsis:       [PATCH] Fix portsnap's INDEX building
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Mon Oct 15 16:30:01 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Matthew D. Fuller
>Release:        FreeBSD 9.0-STABLE amd64
>Organization:
>Environment:
System: FreeBSD draco.over-yonder.net 9.0-STABLE FreeBSD 9.0-STABLE #0 r237357: 
Thu Jun 21 01:21:37 CDT 2012 
[email protected]:/usr/obj/usr/src/sys/DRACO amd64


        
>Description:

In r227483, portsnap.sh was changed to use $IFS in several places rather
than calling out to cut(1) to split things up by '|'.  However, in
several places, this was done around a block by "IFS='|'" prior and
"IFS=" after, which has the result of leaving IFS set to the empty string
after the fact.

This causes an error when extract_indices() is called after some of the
fetch functions (as will happen when you run a `portsnap fetch update`)
that looks like:

  Building new INDEX files... DESCRIBE.7 INDEX-8 not provided by portsnap 
server; INDEX-7 not being generated.


To properly return to default behavior, IFS needs to be unset, not set to
empty.  Changes tested via 'extract' and 'fetch update'.

>How-To-Repeat:
        
>Fix:


Index: portsnap.sh
===================================================================
--- portsnap.sh (revision 241541)
+++ portsnap.sh (working copy)
@@ -587,7 +587,7 @@
 
 # Take a list of ${oldhash}|${newhash} and output a list of needed patches
 fetch_make_patchlist() {
-       IFS='|'
+       local IFS='|'
        echo "" 1>${QUIETREDIR}
        grep -vE "^([0-9a-f]{64})\|\1$" |
                while read X Y; do
@@ -596,7 +596,6 @@
                        echo "${X}|${Y}"
                done
        echo "" 1>${QUIETREDIR}
-       IFS=
 }
 
 # Print user-friendly progress statistics
@@ -725,7 +724,7 @@
                fi
                rm -f diff OLD NEW ${X}-${Y}.gz ptmp
        done < patchlist 2>${QUIETREDIR}
-       IFS=
+       unset IFS
        echo "done."
 
 # Update metadata without patches
@@ -810,7 +809,7 @@
                fi
                rm -f diff OLD NEW ${X}-${Y}
        done < patchlist 2>${QUIETREDIR}
-       IFS=
+       unset IFS
        echo "done."
 
 # Update ports without patches
@@ -948,6 +947,8 @@
                return 0;
        fi
 
+       unset IFS
+
        extract_metadata
        extract_indices
 }

>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to