Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 45372 Details for
Bug 73545
app-portage/mirrorselect: Insecure tempfile creation
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
mirrorselect fix
mirrorselect-0.87.patch (text/plain), 4.64 KB, created by
Ervin Németh
on 2004-12-06 04:07:22 UTC
(
hide
)
Description:
mirrorselect fix
Filename:
MIME Type:
Creator:
Ervin Németh
Created:
2004-12-06 04:07:22 UTC
Size:
4.64 KB
patch
obsolete
>--- /usr/sbin/mirrorselect.old 2004-11-15 09:38:35.000000000 +0000 >+++ /usr/sbin/mirrorselect 2004-12-01 16:04:03.116908826 +0000 >@@ -11,7 +11,7 @@ > # Ned Ludd <solar@gentoo.org> > > SERVERS="1" >-VERSION="0.87" >+VERSION="0.88" > > CHECK_VHOSTS="$(which host 2> /dev/null)" > DIALOG="$(which dialog 2>/dev/null)" >@@ -23,6 +23,8 @@ > > MIRROR_LIST="" > >+TIMEOUT="25" >+ > print_usage() { > echo "Mirrorselect Usage:" > echo "options:" >@@ -53,6 +55,7 @@ > echo " -c : Prevent \$DISPLAY detection, this will force the use" > echo " of dialog instead of Xdialog (if available) in Interactive" > echo " mode" >+ echo " -TX : Set network timeout to X seconds (default is 25)" > echo " -v : Display Mirrorselect version" > echo > echo "Automatic Example:" >@@ -173,10 +176,11 @@ > exit 1 > else > CHECKLIST="$(echo $MIRROR_LIST | sed -e 's:http\::\n&:g' -e 's:ftp\::\n&:g' | cut -f1 -d">")" >- COUNT=$(echo ${CHECKLIST}|wc -w| tr -d ' ') >+ COUNT=$(($(echo ${CHECKLIST}|wc -w))) > > echo "Downloading 100k segments from ${COUNT} server(s)" >&2 >- TMPFILE="$(mktemp -p /tmp mirrorselect-deep-XXXXXX)" >+ TMPFILE="$(mktemp -p /tmp mirrorselect-deep-XXXXXX)" || exit 1 >+ trap "rm -f ${TMPFILE}; exit 1" 0 1 2 15 > > YCOUNT=0 > for i in ${CHECKLIST} >@@ -185,21 +189,19 @@ > PERCENT=$(((${YCOUNT}*100)/${COUNT})) > print_percent "${PERCENT}" "${i}" > STIME=$(date +%s%N) >- wget -t 1 -C off -T 25 -O /dev/null - ${i}/distfiles/mirrorselect-test 2>/dev/null >+ wget -t 1 -C off -T ${TIMEOUT} -O /dev/null - ${i}/distfiles/mirrorselect-test 2>/dev/null > RESULT=${?} > ETIME=$(date +%s%N) > [ ${RESULT} == 0 ] && $(echo "$((${ETIME}-${STIME})) ${RESULT} ${i}" >> ${TMPFILE}) > done > echo "Sorting by speed " >&2 > MIRRORS="$(sort -g < ${TMPFILE} | cut -f3- -d" " | head -n ${SERVERS})" >- echo "Cleaning temporary files" >&2 >- $(rm -Rf ${TMPFILE}) > fi > } > > automatic() { > local i >- local TMPFILE >+ local TMPDIR > local CHECK_TMP > local COUNT > local CURRENT_INDEX >@@ -221,17 +223,18 @@ > echo "Splitting into blocks of ${BLOCK}." >&2 > echo "Please note that the smaller the block size the longer this takes..." >&2 > >- TMPFILE="$(mktemp -p /tmp mirrorselect-split-XXXXXX)" >- $(echo ${CHECKLIST} | tr ' ' '\n' | sort -u | split -l ${BLOCK} - ${TMPFILE}-) >+ TMPDIR="$(mktemp -dp /tmp mirrorselect-split-XXXXXX)" || exit 1 >+ trap "rm -rf ${TMPDIR}; exit 1" 0 1 2 15 >+ $(echo ${CHECKLIST} | tr ' ' '\n' | sort -u | split -d -l ${BLOCK} - ${TMPDIR}/) > CHECKLIST="" > >- COUNT="$(ls ${TMPFILE}-* | wc -w)" >- CURRENT_INDEX=1 >+ COUNT=$(($(ls ${TMPDIR} | wc -l))) >+ CURRENT_INDEX=0 > >- for i in $(ls ${TMPFILE}-* | sed "s: :\n:g") >+ for i in ${TMPDIR}/* > do >- CURRENT_INDEX=$((${CURRENT_INDEX}+1)) > PERCENT=$(((${CURRENT_INDEX}*100)/${COUNT})) >+ CURRENT_INDEX=$((${CURRENT_INDEX}+1)) > > print_percent ${PERCENT} ${i/*\//} > >@@ -240,8 +243,7 @@ > CHECKLIST="${CHECKLIST} ${CHECK_TMP}" > done > >- echo "Cleaning tmp files and preparing to select fastest servers..." >&2 >- $(rm -Rf ${TMPFILE}*) >+ echo "Preparing to select fastest servers..." >&2 > fi > > if [ -z "${CHECKLIST}" ] ; then >@@ -320,33 +322,30 @@ > # > # Request/original patch by Bret Towe <btowe@gbis.com> > # >+ NEWMAKECONF="$(mktemp -u /etc/make.conf.mirrorselect_XXXXXX)" || exit 1 > if [ "$(grep ${PATTERN} /etc/make.conf)" ] ; then >- mv /etc/make.conf /etc/make.conf.old >- sed "s#^[ \#]*${PATTERN}.*#${PATTERN}\"${MIRRORS}\"#" /etc/make.conf.old > /etc/make.conf >+ sed "s#^[ \#]*${PATTERN}.*#${PATTERN}\"${MIRRORS}\"#" /etc/make.conf > ${NEWMAKECONF} > else >- echo "${PATTERN}\"$MIRRORS\"" >> /etc/make.conf >+ cat /etc/make.conf > ${NEWMAKECONF} >+ echo >> ${NEWMAKECONF} >+ echo "${PATTERN}\"$MIRRORS\"" >> ${NEWMAKECONF} > fi > > # > # Its very unlikely that this check will ever fail anymore > # Although this is being kept in as a safety net. > # >- if [ "$(grep ${PATTERN} /etc/make.conf)" ] ; then >+ if [ "$(grep ${PATTERN} ${NEWMAKECONF})" ] ; then > echo "Mirrors set successfully" >&2 >- if [ -e /etc/make.conf.old ] ; then >- rm /etc/make.conf.old >- fi >+ mv ${NEWMAKECONF} /etc/make.conf > else > echo "Failed updating /etc/make.conf" >- if [ -e /etc/make.conf.old ] ; then >- mv /etc/make.conf.old /etc/make.conf >- echo "Reverting to original" >&2 >- fi >+ exit 1 > fi > } > > >-while getopts "ais:rovb:Dc" opt >+while getopts "ais:rovb:DcT:" opt > do > case $opt in > a ) MODE="auto";; >@@ -358,6 +357,7 @@ > D ) DEEP="1";; > v ) echo "Mirrorselect version: ${VERSION}"; exit 0;; > c ) FORCECONSOLE="1";; >+ T ) TIMEOUT=$OPTARG;; > * ) print_usage; exit 1;; > esac > done
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 73545
: 45372