#!/bin/sh #################### # Copyright (C) 2011 by Raphael Geissert # # # This file is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this file. If not, see . #################### set -e OLDSTABLE= STABLE=lenny TESTING=squeeze export LANG=C [ -f doc/DSA.template ] || { echo "error: call this script from the root of the repository" >&2 exit 1 } [ $# -ge 3 ] || { echo "usage: $0 [--save] DSA package vulnerability [cve(s) [bugnumber]]" >&2 exit 1 } save=false if [ "$1" = "--save" ]; then save=true shift fi DSAID="$1" PACKAGE="$(printf '%s' "$2" | tr "[:upper:]" "[:lower:]")" VULNERABILITY="$3" CVE="$(printf '%s' "$4" | tr "[:lower:]" "[:upper:]")" BUGNUM="$5" if grep -wq "DSA-$DSAID" data/DSA/list; then echo "error: DSA-$DSAID has already been used" >&2 exit 1 fi setvar() { local var="$1" value="$2" if [ -z "$value" ]; then value="$(eval 'printf "%s" "$'"$var"'"')" fi sed -i "s=\$$var=$value=g" "$tmpf" } tmpf=$(mktemp) cat doc/DSA.template > $tmpf name_length=$(echo -n "$DEBFULLNAME" | wc -c) spacing=$((24-$name_length)) SPACEDDEBFULLNAME="$DEBFULLNAME" while [ $spacing -gt 0 ]; do SPACEDDEBFULLNAME=" $SPACEDDEBFULLNAME" spacing=$((spacing-1)) done DATE="$(date +"%B %d, %Y")" date_length=$(echo -n "$DATE" | wc -c) spacing=$((22-$date_length)) SPACEDDATE="$DATE" while [ $spacing -gt 0 ]; do SPACEDDATE="$SPACEDDATE " spacing=$((spacing-1)) done setvar DEBEMAIL setvar DEBFULLNAME setvar SPACEDDEBFULLNAME setvar PACKAGE setvar CVE setvar REMLOCAL "${REMLOCAL:-remote}" setvar DSAID setvar BUGNUM setvar VULNERABILITY setvar DEBIANSPECIFIC "${DEBIANSPECIFIC:-no}" setvar OLDSTABLE setvar STABLE setvar TESTING setvar SPACEDDATE setvar DATE for dist in $OLDSTABLE $STABLE $TESTING UNSTABLE; do version="$(eval 'printf "%s" "$'"$dist"_VERSION'"')" [ -z "$version" ] || setvar "${dist}_VERSION" "$version" done if ! $save; then cat $tmpf echo echo " ---- " echo "Pass --save as the first parameter to save the text to DSA-$DSAID" echo "(the data/DSA/list entry will also be added)" rm -f "$tmpf" exit else mv -i $tmpf "DSA-$DSAID" || { rm -f $tmpf; exit; } dsa_entry=$(mktemp) cat < $dsa_entry [$(date +"%d %b %Y")] DSA-$DSAID $PACKAGE - $VULNERABILITY EOF if [ "$CVE" ]; then CVE="$(printf '%s' "$CVE" | sed 's/[ ,;]+/ /g')" printf "\t{%s}\n" "$CVE" >> $dsa_entry fi for dist in $OLDSTABLE $STABLE; do version="$(eval 'printf "%s" "$'"$dist"_VERSION'"')" [ -z "$version" ] || \ printf "\t[%s] - %s %s\n" "$dist" "$PACKAGE" "$version" >> $dsa_entry done tmp_list="$(mktemp)" cat $dsa_entry data/DSA/list > $tmp_list cat $tmp_list > data/DSA/list rm -f $tmp_list echo "DSA text written to ./DSA-$DSAID" fi