summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2004-10-21 17:12:35 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2004-10-21 17:12:35 +0000
commit02571d4e204d9eaec528e45afb5a9c490bb3db6c (patch)
tree76350fcdeea0f4883d1891b83b11129c7759a567
parent6b3d751747ef766e42d4657807319c8c21aecff7 (diff)
downloadpostgresql-02571d4e204d9eaec528e45afb5a9c490bb3db6c.tar.gz
Back-patch make_oidjoins_check security improvement.
-rwxr-xr-xcontrib/findoidjoins/make_oidjoins_check23
1 files changed, 14 insertions, 9 deletions
diff --git a/contrib/findoidjoins/make_oidjoins_check b/contrib/findoidjoins/make_oidjoins_check
index 72bb645251..90ef19110f 100755
--- a/contrib/findoidjoins/make_oidjoins_check
+++ b/contrib/findoidjoins/make_oidjoins_check
@@ -10,27 +10,32 @@
# Caution: you may need to use GNU awk.
AWK=${AWK:-awk}
-trap "rm -f /tmp/$$ /tmp/$$a /tmp/$$b" 0 1 2 3 15
+INPUTFILE="tmp$$a"
+DUPSFILE="tmp$$b"
+NONDUPSFILE="tmp$$c"
+rm -f $INPUTFILE $DUPSFILE $NONDUPSFILE
+
+trap "rm -f $INPUTFILE $DUPSFILE $NONDUPSFILE" 0 1 2 3 15
# Read input
-cat "$@" >/tmp/$$
+cat "$@" >$INPUTFILE
# Look for fields with multiple references.
-cat /tmp/$$ | cut -d' ' -f2 | sort | uniq -d >/tmp/$$a
-if [ -s /tmp/$$a ] ; then
+cat $INPUTFILE | cut -d' ' -f2 | sort | uniq -d >$DUPSFILE
+if [ -s $DUPSFILE ] ; then
echo "Ignoring these fields that link to multiple tables:" 1>&2
- cat /tmp/$$a 1>&2
+ cat $DUPSFILE 1>&2
fi
# Get the non-multiply-referenced fields.
-cat /tmp/$$ | while read LINE
+cat $INPUTFILE | while read LINE
do
set -- $LINE
- grep "$2" /tmp/$$a >/dev/null 2>&1 || echo $LINE
-done >/tmp/$$b
+ grep "^$2\$" $DUPSFILE >/dev/null 2>&1 || echo $LINE
+done >$NONDUPSFILE
# Generate the output.
-cat /tmp/$$b |
+cat $NONDUPSFILE |
$AWK -F'[ \.]' '\
BEGIN \
{