@ -15,14 +15,71 @@ if [ $? -eq 0 ]; then
exit 0
exit 0
fi
fi
if [ -f /data/system/packages.xml -a -f /tmp/releasekey ] ; then
if [ -f "/data/system/packages.xml" -a -f "/tmp/releasekey" ] ; then
relCert = $( grep -A3 'package name="com.android.htmlviewer"' /data/system/packages.xml | grep "cert index" | head -n 1 | sed -e 's|.*"\([[:digit:]][[:digit:]]*\)".*|\1|g' )
relkey = $( cat "/tmp/releasekey" )
OLDIFS = " $IFS "
IFS = ""
while read line; do
params = ${ line # *<package * }
if [ " $line " != " $params " ] ; then
kvp = ${ params %% * }
params = ${ params #* }
while [ " $kvp " != " $params " ] ; do
key = ${ kvp %%=* }
val = ${ kvp #*= }
vlen = $(( ${# val } - 2 ))
val = ${ val : 1 : $vlen }
if [ " $key " = "name" ] ; then
package = " $val "
fi
kvp = ${ params %% * }
params = ${ params #* }
done
continue
fi
params = ${ line # *<cert * }
if [ " $line " != " $params " ] ; then
keyidx = ""
keyval = ""
kvp = ${ params %% * }
params = ${ params #* }
while [ " $kvp " != " $params " ] ; do
key = ${ kvp %%=* }
val = ${ kvp #*= }
vlen = $(( ${# val } - 2 ))
val = ${ val : 1 : $vlen }
if [ " $key " = "index" ] ; then
keyidx = " $val "
fi
if [ " $key " = "key" ] ; then
keyval = " $val "
fi
kvp = ${ params %% * }
params = ${ params #* }
done
if [ -n " $keyidx " ] ; then
if [ " $package " = "com.android.htmlviewer" ] ; then
cert_idx = " $keyidx "
fi
fi
if [ -n " $keyval " ] ; then
eval " key_ $keyidx = $keyval "
fi
continue
fi
done < "/data/system/packages.xml"
IFS = " $OLDIFS "
# Tools missing? Err on the side of caution and exit cleanly
# Tools missing? Err on the side of caution and exit cleanly
if [ " z $relCert " = = "z" ] ; then exit 0; fi
if [ -z " $cert_idx " ] ; then
echo "Package cert index not found; skipping signature check..."
exit 0
fi
varname = " key_ $cert_idx "
eval " pkgkey=\$ $varname "
grep " cert index=\" $relCert \" " /data/system/packages.xml | grep -q ` cat /tmp/releasekey`
if [ " $pkgkey " != " $relkey " ] ; then
if [ $? -ne 0 ] ; then
echo "You have an installed system that isn't signed with this build's key, aborting..."
echo "You have an installed system that isn't signed with this build's key, aborting..."
exit 124
exit 124
fi
fi