On 25 August 2008 at 04:11, Nico Golde wrote:
| Hi Dirk,
| * Dirk Eddelbuettel <[EMAIL PROTECTED]> [2008-08-25 03:07]:
| > I think it is a false positive:
| > 
| > # test functionality of the compiler
| > javac_works='not present'
| > if test -n "$JAVAC"; then
| >     javac_works='not functional'
| >     rm -rf /tmp/A.java /tmp/A.class           ## <- note the rm -rf
| >     echo "public class A { }" > /tmp/A.java
| >     if test -e /tmp/A.java; then
| >         if "${JAVAC}" /tmp/A.java >/dev/null; then
| >             if test -e /tmp/A.class; then
| >                 javac_works=yes
| >             fi
| >         fi
| >     fi
| >     rm -rf /tmp/A.java /tmp/A.class
| > fi
| > 
| > Right before /tmp/A.* are being used, they are being wiped. No symlink
| > attack.
| > 
| > Unless I hear objections, I plan to close this one.
| 
| Please don't. There is still a race condition here. The 
| chance is not that high but it's still possible in theory to 
| create the symlink after the unlink. Using mktemp shouldn't 
| be a big effort but solve this problem.

Right. Stephen said so too. Trouble is that we then accumulate yet another
Debian-only patch... Oh well.

So something like

# test functionality of the compiler
javac_works='not present'
if test -n "$JAVAC"; then
    javac_works='not functional'
    #rm -rf /tmp/A.java /tmp/A.class           
    tempdir=`mktemp -d`
    echo "public class A { }" > ${tempdir}/A.java
    if test -e ${tempdir}/A.java; then
        if "${JAVAC}" ${tempdir}/A.java >/dev/null; then
            if test -e ${tempdir}/A.class; then
                javac_works=yes
            fi
        fi
    fi
    #rm -rf /tmp/A.java /tmp/A.class
    rm -rf ${tempdir}
fi

should do, right?

Dirk

-- 
Three out of two people have difficulties with fractions.



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to