]> git.donarmstrong.com Git - ca-certificates.git/blobdiff - debian/postinst
Broken symlinks on upgrade due to plain c_rehash call #643667
[ca-certificates.git] / debian / postinst
index ca6aab06b1c7de96b7f0212efcb2babe46bf5741..21d1b94aceb2ebc15ca34aa78e50a2d9b5cdeba9 100644 (file)
 #     `abort-remove' or `abort-deconfigure'.
 
 each_value() {
- echo "$l" |tr ',' '\n' | sed -e 's/^[[:space:]]*//' 
+ echo "$1" |tr ',' '\n' | sed -e 's/^[[:space:]]*//' 
 }
 
 memberp() {
  m="$1"
  l="$2"
- each_value "$1" | grep -q "^$m\$"
+ each_value "$l" | grep -q "^$m\$"
 }
 
 delca() {
@@ -74,6 +74,12 @@ case "$1" in
             if memberp "$ca" "$CERTS_ENABLED"; then
               echo "$ca"
               # CERTS_ENABLED=$(delca "$ca" "$CERTS_ENABLED")
+         elif memberp "$ca" "$CERTS_AVAILABLE" ||
+              echo "$line" | grep -q '^!'; then
+           echo "!$ca"
+         elif [ -f /usr/share/ca-certificates/"$ca" ] || \
+              [ -f /usr/local/share/ca-certificates/"$ca" ]; then
+           echo "$ca"
             else
               echo "!$ca"
             fi
@@ -131,7 +137,13 @@ EOF
                -e 's/^[[:space:]]*1[[:space:]]*/!/' \
            >> /etc/ca-certificates.conf
        fi
-       update-ca-certificates
+       # fix bogus symlink to ca-certificates.crt on upgrades; see
+       # Debian #643667; drop after wheezy
+       if dpkg --compare-versions "$2" lt-nl 20110502+nmu2+643667; then
+           update-ca-certificates --fresh
+       else
+           update-ca-certificates
+       fi
     ;;
 
     abort-upgrade|abort-remove|abort-deconfigure)