Your message dated Sun, 11 Sep 2011 18:17:14 +0000
with message-id <[email protected]>
and subject line Bug#602244: fixed in bash 4.2-1~exp1
has caused the Debian Bug report #602244,
regarding bash.preinst: renames .bash_profile to .profile in /etc/skel in rare 
circumstances
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
602244: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=602244
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: bash
Version: 4.1-3
Severity: minor
Justification: unlikely to come up in practice
Tags: patch

Hi,

-- 8< --
Subject: bash.preinst: remove obsolete conffile migration code

If /etc/skel/.profile comes from old Ubuntu[1], then .bash_profile in
the skeleton home dir will be renamed to overwrite it, which would not
be appropriate if a custom .bash_profile uses bashisms.

Since the conffile migration this is part of is not relevant to
lenny->squeeze upgrades anyway, could we just remove that code?

While at it, md5.[ch] can be removed since it is not needed any
more (and if needed again later, there is always snapshot.debian.org
to find the old source package).

All this code removal simplifies the preinst a great deal, hopefully
making it more approachable.

[1] gutsy.  Indent in the ". ~/.bashrc" line is a tab,
sha1sum=342d0825cdf0c092ff0fb7f0834baa5656aa7509

  # ~/.profile: executed by the command interpreter for login shells.
  # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
  # exists.
  # see /usr/share/doc/bash/examples/startup-files for examples.
  # the files are located in the bash-doc package.

  # the default umask is set in /etc/profile
  #umask 022

  # if running bash
  if [ -n "$BASH_VERSION" ]; then
      # include .bashrc if it exists
      if [ -f ~/.bashrc ]; then
        . ~/.bashrc
      fi
  fi

  # set PATH so it includes user's private bin if it exists
  if [ -d ~/bin ] ; then
      PATH=~/bin:"${PATH}"
  fi
---
 debian/bash.preinst.c |  104 -------------
 debian/changelog      |   10 ++
 debian/copyright      |   51 -------
 debian/md5.c          |  394 -------------------------------------------------
 debian/md5.h          |   91 -----------
 debian/rules          |    5 +-
 6 files changed, 12 insertions(+), 643 deletions(-)
 delete mode 100644 debian/md5.c
 delete mode 100644 debian/md5.h

diff --git a/debian/bash.preinst.c b/debian/bash.preinst.c
index 524e126..6ba532e 100644
--- a/debian/bash.preinst.c
+++ b/debian/bash.preinst.c
@@ -21,8 +21,6 @@
 #define PATH_MAX 4096
 #endif
 
-#include "md5.h"
-
 int check_predepends(void)
 {
     pid_t child;
@@ -56,81 +54,6 @@ int check_predepends(void)
     return EXIT_FAILURE;
 }
 
-#define BUFSIZE 8192
-
-int md5sum_match(char *fn, char* fn_digest)
-{
-  md5_state_t md5;
-  md5_byte_t digest[16];
-  unsigned char hexdigest[33];
-  int i, j, fd;
-  size_t nbytes;
-  md5_byte_t buf[BUFSIZE];
-
-  // if not existant, md5sums don't match
-  if (access(fn, R_OK))
-    return 0;
-  if ((fd = open(fn, O_RDONLY)) == -1)
-    return 0;
-  
-  md5_init(&md5);
-  while (nbytes = read(fd, buf, BUFSIZE))
-    md5_append(&md5, buf, nbytes);
-  md5_finish(&md5, digest);
-  close(fd);
-
-  for (i = j = 0; i < 16; i++) {
-    unsigned char c;
-    c = (digest[i] >> 4) & 0xf;
-    c = (c > 9) ? c + 'a' - 10 : c + '0';
-    hexdigest[j++] = c;
-    c = (digest[i] & 0xf);
-    c = (c > 9) ? c + 'a' - 10 : c + '0';
-    hexdigest[j++] = c;
-  }
-  hexdigest[j] = '\0';
-#ifdef NDEBUG
-  fprintf(stderr, "fn=%s, md5sum=%s, expected=%s\n", fn, hexdigest, fn_digest);
-#endif
-  return !strcmp(fn_digest, hexdigest);
-}
-
-int unmodified_file(char *fn, int md5sumc, unsigned char* md5sumv[])
-{
-  int i;
-
-  // if not existant, pretend its unmodified
-  if (access(fn, R_OK))
-    return 1;
-  for (i = 0; i < md5sumc; i++) {
-    if (md5sum_match(fn, md5sumv[i]))
-      return 1;
-  }
-  return 0;
-}
-
-unsigned char *md5sumv_bash_profile[] = {
-  "d1a8c44e7dd1bed2f3e75d1343b6e4e1", // dapper, edgy, etch
-  "0bc1802860b758732b862ef973cd79ff", // feisty, gutsy
-};
-const int md5sumc_bash_profile = sizeof(md5sumv_bash_profile) / sizeof (char 
*);
-
-unsigned char *md5sumv_profile[] = {
-  "7d97942254c076a2ea5ea72180266420", // feisty, gutsy
-};
-const int md5sumc_profile = sizeof(md5sumv_profile) / sizeof (char *);
-
-#ifdef BC_CONFIG
-unsigned char *md5sumv_completion[] = {
-  "2bc0b6cf841eefd31d607e618f1ae29d", // dapper
-  "ae1d298e51ea7f8253eea8b99333561f", // edgy
-  "adc2e9fec28bd2d4a720e725294650f0", // feisty
-  "c8bce25ea68fb0312579a421df99955c", // gutsy, and last one in bash
-  "9da8d1c95748865d516764fb9af82af9", // etch, sid (last one in bash)
-};
-const int md5sumc_completion = sizeof(md5sumv_completion) / sizeof (char *);
-#endif
-
 char *check_diversion(void)
 {
     pid_t child;
@@ -191,33 +114,6 @@ int main(void) {
     int targetlen;
     char target[PATH_MAX+1], answer[1024], *fn;
 
-    fn = "/etc/skel/.bash_profile";
-    if (!access(fn, R_OK)) {
-      if (unmodified_file(fn, md5sumc_bash_profile, md5sumv_bash_profile)) {
-       printf("removing %s in favour of /etc/skel/.profile\n", fn);
-       unlink(fn);
-      }
-      else {
-       fn = "/etc/skel/.profile";
-       if (!access(fn, R_OK)) {
-         if (unmodified_file(fn, md5sumc_profile, md5sumv_profile)) {
-           printf("renaming /etc/skel/.bash_profile to %s\n", fn);
-           rename("/etc/skel/.bash_profile", fn);
-         }
-       }
-      }
-    }
-
-#ifdef BC_CONFIG
-    fn = "/etc/bash_completion";
-    if (!access(fn, R_OK)) {
-      if (unmodified_file(fn, md5sumc_completion, md5sumv_completion)) {
-       printf("removing unmodified %s, now in package bash-completion\n", fn);
-       unlink(fn);
-      }
-    }
-#endif
-
     if (check_predepends() != EXIT_SUCCESS) {
        printf("\nPlease upgrade to a new version of dpkg\n\n");
        return EXIT_FAILURE;
diff --git a/debian/changelog b/debian/changelog
index 640a0aa..ca71391 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,13 @@
+bash (4.1-3.1) local; urgency=low
+
+  * debian/bash.preinst.c:
+    - Leave /etc/skel/.bash_profile alone on upgrades.  Any
+      obsolete .bash_profile would already have been removed in
+      the upgrade to lenny.
+    - Remove dead code for handling /etc/bash_completion.
+
+ -- Jonathan Nieder <[email protected]>  Mon, 01 Nov 2010 17:41:40 -0500
+
 bash (4.1-3) unstable; urgency=low
 
   * Apply upstream patches 003, 004, 005.
diff --git a/debian/copyright b/debian/copyright
index 681ecd3..060c843 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -382,54 +382,3 @@ support/man2html.c
  *
  * THIS IS A MODIFIED VERSION.  IT WAS MODIFIED BY [email protected] FOR
  * USE BY BASH.
-
-debian/md5.[ch]
-
-/*
-  Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  L. Peter Deutsch
-  [email protected]
-
- */
-/* $Id: md5.h 43594 2006-04-03 16:27:50Z matthias.klose $ */
-/*
-  Independent implementation of MD5 (RFC 1321).
-
-  This code implements the MD5 Algorithm defined in RFC 1321, whose
-  text is available at
-       http://www.ietf.org/rfc/rfc1321.txt
-  The code is derived from the text of the RFC, including the test suite
-  (section A.5) but excluding the rest of Appendix A.  It does not include
-  any code or documentation that is identified in the RFC as being
-  copyrighted.
-
-  The original and principal author of md5.h is L. Peter Deutsch
-  <[email protected]>.  Other authors are noted in the change history
-  that follows (in reverse chronological order):
-
-  2002-04-13 lpd Removed support for non-ANSI compilers; removed
-       references to Ghostscript; clarified derivation from RFC 1321;
-       now handles byte order either statically or dynamically.
-  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
-  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
-       added conditionalization for C++ compilation from Martin
-       Purschke <[email protected]>.
-  1999-05-03 lpd Original version.
- */
diff --git a/debian/md5.c b/debian/md5.c
deleted file mode 100644
index 0e1058f..0000000
--- a/debian/md5.c
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
-  Copyright (C) 1999, 2000, 2002 Aladdin Enterprises.  All rights reserved.
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  L. Peter Deutsch
-  [email protected]
-
- */
-/* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */
-/*
-  Independent implementation of MD5 (RFC 1321).
-
-  This code implements the MD5 Algorithm defined in RFC 1321, whose
-  text is available at
-       http://www.ietf.org/rfc/rfc1321.txt
-  The code is derived from the text of the RFC, including the test suite
-  (section A.5) but excluding the rest of Appendix A.  It does not include
-  any code or documentation that is identified in the RFC as being
-  copyrighted.
-
-  The original and principal author of md5.c is L. Peter Deutsch
-  <[email protected]>.  Other authors are noted in the change history
-  that follows (in reverse chronological order):
-
-  2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order
-       either statically or dynamically; added missing #include <string.h>
-       in library.
-  2002-03-11 lpd Corrected argument list for main(), and added int return
-       type, in test program and T value program.
-  2002-02-21 lpd Added missing #include <stdio.h> in test program.
-  2000-07-03 lpd Patched to eliminate warnings about "constant is
-       unsigned in ANSI C, signed in traditional"; made test program
-       self-checking.
-  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
-  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5).
-  1999-05-03 lpd Original version.
- */
-
-#include "md5.h"
-#include <string.h>
-#include <limits.h>
-
-#undef BYTE_ORDER      /* 1 = big-endian, -1 = little-endian, 0 = unknown */
-#ifdef ARCH_IS_BIG_ENDIAN
-#  define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1)
-#else
-#  define BYTE_ORDER 0
-#endif
-
-#define T_MASK ((md5_word_t)~0)
-#define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87)
-#define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9)
-#define T3    0x242070db
-#define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111)
-#define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050)
-#define T6    0x4787c62a
-#define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec)
-#define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe)
-#define T9    0x698098d8
-#define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850)
-#define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e)
-#define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841)
-#define T13    0x6b901122
-#define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c)
-#define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71)
-#define T16    0x49b40821
-#define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d)
-#define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf)
-#define T19    0x265e5a51
-#define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855)
-#define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2)
-#define T22    0x02441453
-#define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e)
-#define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437)
-#define T25    0x21e1cde6
-#define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829)
-#define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278)
-#define T28    0x455a14ed
-#define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa)
-#define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07)
-#define T31    0x676f02d9
-#define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375)
-#define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd)
-#define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e)
-#define T35    0x6d9d6122
-#define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3)
-#define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb)
-#define T38    0x4bdecfa9
-#define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f)
-#define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f)
-#define T41    0x289b7ec6
-#define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805)
-#define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a)
-#define T44    0x04881d05
-#define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6)
-#define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a)
-#define T47    0x1fa27cf8
-#define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a)
-#define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb)
-#define T50    0x432aff97
-#define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58)
-#define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6)
-#define T53    0x655b59c3
-#define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d)
-#define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82)
-#define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e)
-#define T57    0x6fa87e4f
-#define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f)
-#define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb)
-#define T60    0x4e0811a1
-#define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d)
-#define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca)
-#define T63    0x2ad7d2bb
-#define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e)
-
-
-static void
-md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/)
-{
-    md5_word_t
-       a = pms->abcd[0], b = pms->abcd[1],
-       c = pms->abcd[2], d = pms->abcd[3];
-    md5_word_t t;
-#if BYTE_ORDER > 0
-    /* Define storage only for big-endian CPUs. */
-    md5_word_t X[16];
-#else
-    /* Define storage for little-endian or both types of CPUs. */
-    md5_word_t xbuf[16];
-    const md5_word_t *X;
-#endif
-
-    {
-#if BYTE_ORDER == 0
-       /*
-        * Determine dynamically whether this is a big-endian or
-        * little-endian machine, since we can use a more efficient
-        * algorithm on the latter.
-        */
-       static const int w = 1;
-
-       if (*((const md5_byte_t *)&w)) /* dynamic little-endian */
-#endif
-#if BYTE_ORDER <= 0            /* little-endian */
-       {
-           /*
-            * On little-endian machines, we can process properly aligned
-            * data without copying it.
-            */
-           if (!((data - (const md5_byte_t *)0) & 3)) {
-               /* data are properly aligned */
-               X = (const md5_word_t *)data;
-           } else {
-               /* not aligned */
-               memcpy(xbuf, data, 64);
-               X = xbuf;
-           }
-       }
-#endif
-#if BYTE_ORDER == 0
-       else                    /* dynamic big-endian */
-#endif
-#if BYTE_ORDER >= 0            /* big-endian */
-       {
-           /*
-            * On big-endian machines, we must arrange the bytes in the
-            * right order.
-            */
-           const md5_byte_t *xp = data;
-           int i;
-
-#  if BYTE_ORDER == 0
-           X = xbuf;           /* (dynamic only) */
-#  else
-#    define xbuf X             /* (static only) */
-#  endif
-           for (i = 0; i < 16; ++i, xp += 4)
-               xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24);
-       }
-#endif
-    }
-
-#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n))))
-
-    /* Round 1. */
-    /* Let [abcd k s i] denote the operation
-       a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */
-#define F(x, y, z) (((x) & (y)) | (~(x) & (z)))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + F(b,c,d) + X[k] + Ti;\
-  a = ROTATE_LEFT(t, s) + b
-    /* Do the following 16 operations. */
-    SET(a, b, c, d,  0,  7,  T1);
-    SET(d, a, b, c,  1, 12,  T2);
-    SET(c, d, a, b,  2, 17,  T3);
-    SET(b, c, d, a,  3, 22,  T4);
-    SET(a, b, c, d,  4,  7,  T5);
-    SET(d, a, b, c,  5, 12,  T6);
-    SET(c, d, a, b,  6, 17,  T7);
-    SET(b, c, d, a,  7, 22,  T8);
-    SET(a, b, c, d,  8,  7,  T9);
-    SET(d, a, b, c,  9, 12, T10);
-    SET(c, d, a, b, 10, 17, T11);
-    SET(b, c, d, a, 11, 22, T12);
-    SET(a, b, c, d, 12,  7, T13);
-    SET(d, a, b, c, 13, 12, T14);
-    SET(c, d, a, b, 14, 17, T15);
-    SET(b, c, d, a, 15, 22, T16);
-#undef SET
-
-     /* Round 2. */
-     /* Let [abcd k s i] denote the operation
-          a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */
-#define G(x, y, z) (((x) & (z)) | ((y) & ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + G(b,c,d) + X[k] + Ti;\
-  a = ROTATE_LEFT(t, s) + b
-     /* Do the following 16 operations. */
-    SET(a, b, c, d,  1,  5, T17);
-    SET(d, a, b, c,  6,  9, T18);
-    SET(c, d, a, b, 11, 14, T19);
-    SET(b, c, d, a,  0, 20, T20);
-    SET(a, b, c, d,  5,  5, T21);
-    SET(d, a, b, c, 10,  9, T22);
-    SET(c, d, a, b, 15, 14, T23);
-    SET(b, c, d, a,  4, 20, T24);
-    SET(a, b, c, d,  9,  5, T25);
-    SET(d, a, b, c, 14,  9, T26);
-    SET(c, d, a, b,  3, 14, T27);
-    SET(b, c, d, a,  8, 20, T28);
-    SET(a, b, c, d, 13,  5, T29);
-    SET(d, a, b, c,  2,  9, T30);
-    SET(c, d, a, b,  7, 14, T31);
-    SET(b, c, d, a, 12, 20, T32);
-#undef SET
-
-     /* Round 3. */
-     /* Let [abcd k s t] denote the operation
-          a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */
-#define H(x, y, z) ((x) ^ (y) ^ (z))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + H(b,c,d) + X[k] + Ti;\
-  a = ROTATE_LEFT(t, s) + b
-     /* Do the following 16 operations. */
-    SET(a, b, c, d,  5,  4, T33);
-    SET(d, a, b, c,  8, 11, T34);
-    SET(c, d, a, b, 11, 16, T35);
-    SET(b, c, d, a, 14, 23, T36);
-    SET(a, b, c, d,  1,  4, T37);
-    SET(d, a, b, c,  4, 11, T38);
-    SET(c, d, a, b,  7, 16, T39);
-    SET(b, c, d, a, 10, 23, T40);
-    SET(a, b, c, d, 13,  4, T41);
-    SET(d, a, b, c,  0, 11, T42);
-    SET(c, d, a, b,  3, 16, T43);
-    SET(b, c, d, a,  6, 23, T44);
-    SET(a, b, c, d,  9,  4, T45);
-    SET(d, a, b, c, 12, 11, T46);
-    SET(c, d, a, b, 15, 16, T47);
-    SET(b, c, d, a,  2, 23, T48);
-#undef SET
-
-     /* Round 4. */
-     /* Let [abcd k s t] denote the operation
-          a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */
-#define I(x, y, z) ((y) ^ ((x) | ~(z)))
-#define SET(a, b, c, d, k, s, Ti)\
-  t = a + I(b,c,d) + X[k] + Ti;\
-  a = ROTATE_LEFT(t, s) + b
-     /* Do the following 16 operations. */
-    SET(a, b, c, d,  0,  6, T49);
-    SET(d, a, b, c,  7, 10, T50);
-    SET(c, d, a, b, 14, 15, T51);
-    SET(b, c, d, a,  5, 21, T52);
-    SET(a, b, c, d, 12,  6, T53);
-    SET(d, a, b, c,  3, 10, T54);
-    SET(c, d, a, b, 10, 15, T55);
-    SET(b, c, d, a,  1, 21, T56);
-    SET(a, b, c, d,  8,  6, T57);
-    SET(d, a, b, c, 15, 10, T58);
-    SET(c, d, a, b,  6, 15, T59);
-    SET(b, c, d, a, 13, 21, T60);
-    SET(a, b, c, d,  4,  6, T61);
-    SET(d, a, b, c, 11, 10, T62);
-    SET(c, d, a, b,  2, 15, T63);
-    SET(b, c, d, a,  9, 21, T64);
-#undef SET
-
-     /* Then perform the following additions. (That is increment each
-        of the four registers by the value it had before this block
-        was started.) */
-    pms->abcd[0] += a;
-    pms->abcd[1] += b;
-    pms->abcd[2] += c;
-    pms->abcd[3] += d;
-}
-
-void
-md5_init(md5_state_t *pms)
-{
-    pms->count[0] = pms->count[1] = 0;
-    pms->abcd[0] = 0x67452301;
-    pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476;
-    pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301;
-    pms->abcd[3] = 0x10325476;
-}
-
-void
-md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes)
-{
-    const md5_byte_t *p = data;
-    int left = nbytes;
-    int offset = (pms->count[0] >> 3) & 63;
-    md5_word_t nbits = (md5_word_t)(nbytes << 3);
-
-    if (nbytes <= 0)
-       return;
-
-    /* this special case is handled recursively */
-    if (nbytes > INT_MAX - offset) {
-        int overlap;
-
-        /* handle the append in two steps to prevent overflow */
-        overlap = 64 - offset;
-
-        md5_append(pms, data, overlap);
-        md5_append(pms, data + overlap, nbytes - overlap); 
-        return;
-    }
-
-    /* Update the message length. */
-    pms->count[1] += nbytes >> 29;
-    pms->count[0] += nbits;
-    if (pms->count[0] < nbits)
-       pms->count[1]++;
-
-    /* Process an initial partial block. */
-    if (offset) {
-       int copy = (offset + nbytes > 64 ? 64 - offset : nbytes);
-
-       memcpy(pms->buf + offset, p, copy);
-       if (offset + copy < 64)
-           return;
-       p += copy;
-       left -= copy;
-       md5_process(pms, pms->buf);
-    }
-
-    /* Process full blocks. */
-    for (; left >= 64; p += 64, left -= 64)
-       md5_process(pms, p);
-
-    /* Process a final partial block. */
-    if (left)
-       memcpy(pms->buf, p, left);
-}
-
-void
-md5_finish(md5_state_t *pms, md5_byte_t digest[16])
-{
-    static const md5_byte_t pad[64] = {
-       0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-    };
-    md5_byte_t data[8];
-    int i;
-
-    /* Save the length before padding. */
-    for (i = 0; i < 8; ++i)
-       data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3));
-    /* Pad to 56 bytes mod 64. */
-    md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1);
-    /* Append the length. */
-    md5_append(pms, data, 8);
-    for (i = 0; i < 16; ++i)
-       digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3));
-}
diff --git a/debian/md5.h b/debian/md5.h
deleted file mode 100644
index 1718401..0000000
--- a/debian/md5.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-  Copyright (C) 1999, 2002 Aladdin Enterprises.  All rights reserved.
-
-  This software is provided 'as-is', without any express or implied
-  warranty.  In no event will the authors be held liable for any damages
-  arising from the use of this software.
-
-  Permission is granted to anyone to use this software for any purpose,
-  including commercial applications, and to alter it and redistribute it
-  freely, subject to the following restrictions:
-
-  1. The origin of this software must not be misrepresented; you must not
-     claim that you wrote the original software. If you use this software
-     in a product, an acknowledgment in the product documentation would be
-     appreciated but is not required.
-  2. Altered source versions must be plainly marked as such, and must not be
-     misrepresented as being the original software.
-  3. This notice may not be removed or altered from any source distribution.
-
-  L. Peter Deutsch
-  [email protected]
-
- */
-/* $Id: md5.h 43594 2006-04-03 16:27:50Z matthias.klose $ */
-/*
-  Independent implementation of MD5 (RFC 1321).
-
-  This code implements the MD5 Algorithm defined in RFC 1321, whose
-  text is available at
-       http://www.ietf.org/rfc/rfc1321.txt
-  The code is derived from the text of the RFC, including the test suite
-  (section A.5) but excluding the rest of Appendix A.  It does not include
-  any code or documentation that is identified in the RFC as being
-  copyrighted.
-
-  The original and principal author of md5.h is L. Peter Deutsch
-  <[email protected]>.  Other authors are noted in the change history
-  that follows (in reverse chronological order):
-
-  2002-04-13 lpd Removed support for non-ANSI compilers; removed
-       references to Ghostscript; clarified derivation from RFC 1321;
-       now handles byte order either statically or dynamically.
-  1999-11-04 lpd Edited comments slightly for automatic TOC extraction.
-  1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5);
-       added conditionalization for C++ compilation from Martin
-       Purschke <[email protected]>.
-  1999-05-03 lpd Original version.
- */
-
-#ifndef md5_INCLUDED
-#  define md5_INCLUDED
-
-/*
- * This package supports both compile-time and run-time determination of CPU
- * byte order.  If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
- * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is
- * defined as non-zero, the code will be compiled to run only on big-endian
- * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to
- * run on either big- or little-endian CPUs, but will run slightly less
- * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined.
- */
-
-typedef unsigned char md5_byte_t; /* 8-bit byte */
-typedef unsigned int md5_word_t; /* 32-bit word */
-
-/* Define the state of the MD5 Algorithm. */
-typedef struct md5_state_s {
-    md5_word_t count[2];       /* message length in bits, lsw first */
-    md5_word_t abcd[4];                /* digest buffer */
-    md5_byte_t buf[64];                /* accumulate block */
-} md5_state_t;
-
-#ifdef __cplusplus
-extern "C" 
-{
-#endif
-
-/* Initialize the algorithm. */
-void md5_init(md5_state_t *pms);
-
-/* Append a string to the message. */
-void md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes);
-
-/* Finish the message and return the digest. */
-void md5_finish(md5_state_t *pms, md5_byte_t digest[16]);
-
-#ifdef __cplusplus
-}  /* end extern "C" */
-#endif
-
-#endif /* md5_INCLUDED */
diff --git a/debian/rules b/debian/rules
index e599db7..d5cf8ff 100755
--- a/debian/rules
+++ b/debian/rules
@@ -176,10 +176,9 @@ clean:
        dh_clean
 
 preinst-build: debian/bash.preinst
-debian/bash.preinst: debian/bash.preinst.c debian/md5.c debian/md5.h
-       $(CC) -O2 -c -Idebian -o debian/md5.o debian/md5.c
+debian/bash.preinst: debian/bash.preinst.c
        $(CC) -O2 -c -Idebian -o debian/bash.preinst.o debian/bash.preinst.c
-       $(CC) -O2 -s -o debian/bash.preinst debian/md5.o debian/bash.preinst.o
+       $(CC) -O2 -s -o debian/bash.preinst debian/bash.preinst.o
 
 # ---------------------------------------------------------------------------
 
-- 
1.7.2.3.557.gab647.dirty




--- End Message ---
--- Begin Message ---
Source: bash
Source-Version: 4.2-1~exp1

We believe that the bug you reported is fixed in the latest version of
bash, which is due to be installed in the Debian FTP archive:

bash-builtins_4.2-1~exp1_amd64.deb
  to main/b/bash/bash-builtins_4.2-1~exp1_amd64.deb
bash-doc_4.2-1~exp1_all.deb
  to main/b/bash/bash-doc_4.2-1~exp1_all.deb
bash-static_4.2-1~exp1_amd64.deb
  to main/b/bash/bash-static_4.2-1~exp1_amd64.deb
bash_4.2-1~exp1.diff.gz
  to main/b/bash/bash_4.2-1~exp1.diff.gz
bash_4.2-1~exp1.dsc
  to main/b/bash/bash_4.2-1~exp1.dsc
bash_4.2-1~exp1_amd64.deb
  to main/b/bash/bash_4.2-1~exp1_amd64.deb
bash_4.2.orig.tar.gz
  to main/b/bash/bash_4.2.orig.tar.gz



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Matthias Klose <[email protected]> (supplier of updated bash package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.8
Date: Sun, 11 Sep 2011 17:52:30 +0200
Source: bash
Binary: bash bash-static bash-builtins bash-doc
Architecture: source all amd64
Version: 4.2-1~exp1
Distribution: experimental
Urgency: low
Maintainer: Matthias Klose <[email protected]>
Changed-By: Matthias Klose <[email protected]>
Description: 
 bash       - GNU Bourne Again SHell
 bash-builtins - Bash loadable builtins - headers & examples
 bash-doc   - Documentation and examples for the The GNU Bourne Again SHell
 bash-static - GNU Bourne Again SHell (static version)
Closes: 587185 602244 602456 602483 614815 632177
Changes: 
 bash (4.2-1~exp1) experimental; urgency=low
 .
   [ Matthias Klose ]
   * New upstream version.
   * Apply upstream patches 001 - 010.
   * Fix parsing of double doublequotes. LP: #780441.
   * /etc/bash.bashrc:
     - Fix quoting issue calling command-not-found. LP: #754859. Closes: 
#587185.
   * Don't cache the value of brk between sbrk calls (Samuel Thibault).
     Closes: #614815.
   * Remove the bashdb and bash-completion packaging rules and files.
   * Just link with libtinfo instead of libncurses if available.
   * Make lintian happy.
 .
   [ Jonathan Nieder ]
   * Update copyright file. Many files that were GPL-2+ were relicensed
     under GPL-3+ in bash 4.0-rc1. Closes: #632177.
   * debian/rules: Use "rm -rf" instead of rmdir to remove usr/share/info
     directory in "with_gfdl = no" build. This prevents build failures when
     using the unmodified upstream tarball.
   * bash.preinst: Tidy up a little.
     - Remove codepath that would rename .bash_profile → .profile if .profile
       was unmodified from the gutsy → hardy transition. Closes: #602244
     - Remove commented experiment from bash-completion transition.
     - Remove misleading "dpkg --assert-support-predepends" check.
       Closes: #602456.
     - Move utility functions to a separate bash.preinst-lib.c and corresponding
       declarations to bash.preinst.h.
   * Remove /bin/sh symlink and /usr/share/man/man1/sh.1.gz from bash package
     contents. Closes: #602483.
     - debian/rules: Do not install /bin/sh and sh.1.gz symlinks.
     - bash.preinst:
       - Make sure /bin/sh is present and points to an executable, forcibly
         creating symlinks /bin/sh -> bash and /usr/share/man/man1/sh.1.gz ->
         bash.1.gz if not.
       - Divert /bin/sh and sh.1.gz on behalf of dash if we are upgrading from
         a bash version with /bin/sh in the files list and bash's copy of
         /bin/sh is not already diverted. This ensures unpacking bash will not
         cause /bin/sh to go missing.
   * bash.postinst: Simplify comment that contained an implementation detail
     about how /bin/sh is provided.
Checksums-Sha1: 
 80136dda8737e33630b783d36f5a83bf4f920043 1201 bash_4.2-1~exp1.dsc
 7846bf9f2f2878ad83db407c40858a230def03b9 2796351 bash_4.2.orig.tar.gz
 ed560aacbb29222815a3379a62f17502cc6ffa03 73719 bash_4.2-1~exp1.diff.gz
 63ffa28b11c8c5d5cc03a1a8dda53bf5d2481b1d 697228 bash-doc_4.2-1~exp1_all.deb
 0c29b083a533f87a8354eba3c6e32b63fb76cdc3 1489982 bash_4.2-1~exp1_amd64.deb
 4e0688196846a7226f6af034283d37b8908cf45f 111892 
bash-builtins_4.2-1~exp1_amd64.deb
 2cee5220850ff2c7fbfa4d8611fca0c9710604ed 918650 
bash-static_4.2-1~exp1_amd64.deb
Checksums-Sha256: 
 8a917e8e0f7f4614e270083aa6677bb54561ac55f73fe7aa51ef4534d0a20577 1201 
bash_4.2-1~exp1.dsc
 70037fbd9c428207d9daec9267f30eb0f26f3ba82ef5a9b5c923542d00de14de 2796351 
bash_4.2.orig.tar.gz
 d98df9694a143cb12b02c01df3fc0532d7f704039209ca6723345ad626a8a40b 73719 
bash_4.2-1~exp1.diff.gz
 852c31991d824a7c144459a47206ca01dd81ab1c5ca734063325ceabf5559851 697228 
bash-doc_4.2-1~exp1_all.deb
 441ab0d4236da481dd53feeaef7e26bf1a3da984ef7f483cd7eedd5ac0801ff4 1489982 
bash_4.2-1~exp1_amd64.deb
 b56181d5bb416ec00646547517b77fc573637d42404a5a7455d39d2de7a8cb79 111892 
bash-builtins_4.2-1~exp1_amd64.deb
 0bad27ff8308641af5a20d94bbdadf0ac50dfbb391dd4c72dd72edb6372e434f 918650 
bash-static_4.2-1~exp1_amd64.deb
Files: 
 e71211898107673d2f1d0624c478b06c 1201 base required bash_4.2-1~exp1.dsc
 02bed321ac495a42dee4b6ee1b24cb21 2796351 base required bash_4.2.orig.tar.gz
 bf98375d1149e9e5b4799e3224415331 73719 base required bash_4.2-1~exp1.diff.gz
 938c07e55d50c92408c7adac6409230b 697228 doc optional 
bash-doc_4.2-1~exp1_all.deb
 4a6454598d6ec953cccc2cc476df00da 1489982 shells required 
bash_4.2-1~exp1_amd64.deb
 415cddf6952b7b1ebc7dd8baf1cc47eb 111892 utils optional 
bash-builtins_4.2-1~exp1_amd64.deb
 b397a76d0a586275d26a8754a02f9e16 918650 shells optional 
bash-static_4.2-1~exp1_amd64.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEARECAAYFAk5s+EEACgkQStlRaw+TLJzEpQCgpHWreb5NpcmB+OoX9WxO1xKL
mLYAoMC84jl8bqsAjmIvB4v6ukJozzKm
=dPBD
-----END PGP SIGNATURE-----



--- End Message ---

Reply via email to