Your message dated Wed, 30 Nov 2011 10:47:14 +0000
with message-id <[email protected]>
and subject line Bug#602244: fixed in bash 4.2-1
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

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_i386.deb
  to main/b/bash/bash-builtins_4.2-1_i386.deb
bash-doc_4.2-1_all.deb
  to main/b/bash/bash-doc_4.2-1_all.deb
bash-static_4.2-1_i386.deb
  to main/b/bash/bash-static_4.2-1_i386.deb
bash_4.2-1.diff.gz
  to main/b/bash/bash_4.2-1.diff.gz
bash_4.2-1.dsc
  to main/b/bash/bash_4.2-1.dsc
bash_4.2-1_i386.deb
  to main/b/bash/bash_4.2-1_i386.deb



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: Wed, 30 Nov 2011 07:29:05 +0100
Source: bash
Binary: bash bash-static bash-builtins bash-doc
Architecture: source all i386
Version: 4.2-1
Distribution: unstable
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 602159 602244 602456 602483 614815 629929 632177 641350 648578
Changes: 
 bash (4.2-1) unstable; urgency=low
 .
   [ Matthias Klose ]
   * New upstream version.
   * Apply upstream patches 001 - 020.
   * 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.
   * Use quilt to apply patches.
   * Fix build error with -Werror=format-security (Pierre Chifflier).
     Closes: #641350.
   * Fix build for the binary target, without calling the build target.
     Closes: #602159.
   * Fix cross builds (Steve McIntyre). Closes: #629929.
 .
   [ 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.
   * Use dpkg-buildflags to retrieve compiler options, including hardening 
flags.
     Build-Depends: dpkg-dev (>= 1.16.1) (Steve Langasek). Closes: #629929.
   * Pass --host to configure only when cross-compiling, --build always, as
     recommended in autotools documentation (Steve Langasek).
 .
   * Merge from Ubuntu (closes: #648578):
     - /etc/skel/.bashrc:
       - Don't set HISTCONTROL twice. Thanks to Kevin Knerr. LP: #465500.
       - Set HISTFILESIZE to 2000 and HISTSIZE to 1000. LP: #544542.
       - README.Debian: Remove obsolete entry "Why is bash configured
         with --disable-net-redirections?"
Checksums-Sha1: 
 367c1b283b0ae4cefd04df00d00a1676d5d0187c 1475 bash_4.2-1.dsc
 7846bf9f2f2878ad83db407c40858a230def03b9 2796351 bash_4.2.orig.tar.gz
 428944bc2f857ed9ff739c3ff6c1ff97c6d97b41 74773 bash_4.2-1.diff.gz
 36ab46bac93bb3aaf1736496334de12b7b6d69ef 697572 bash-doc_4.2-1_all.deb
 1d08b83a35b8c502d68559b7dac36a6de6c147eb 1471426 bash_4.2-1_i386.deb
 baae47e5c7e9858557477804403fd2de9e640319 112028 bash-builtins_4.2-1_i386.deb
 34b8787383017dbb358130f68f47151b8a747613 845820 bash-static_4.2-1_i386.deb
Checksums-Sha256: 
 87dfc0b8748f52a4579a437c24e6472d760fef151cae144cf300155af6d54dbb 1475 
bash_4.2-1.dsc
 70037fbd9c428207d9daec9267f30eb0f26f3ba82ef5a9b5c923542d00de14de 2796351 
bash_4.2.orig.tar.gz
 fcbd44a7fd036ad170cbcbd2d3234920bf6b05ae3f2d624c3111481f018dd036 74773 
bash_4.2-1.diff.gz
 a7e832956ff8225aabe5337e288c6bd26454dc9d9cbb267a437c0afc7ee10038 697572 
bash-doc_4.2-1_all.deb
 2adaa25450c64a9c689fd13cbc2020f48b260da48b437563d81e27b35a58c654 1471426 
bash_4.2-1_i386.deb
 649831ad05abc3754bdbfd28a60b5fb41dc93b111500bf9940c5a1e9b95624a1 112028 
bash-builtins_4.2-1_i386.deb
 be75a2b05888bc251ca71412a25d1436543e51ae0fb87a95222943b7f62ea517 845820 
bash-static_4.2-1_i386.deb
Files: 
 3589c06cbc82d0dbcd51bc4b0f7eee40 1475 base required bash_4.2-1.dsc
 02bed321ac495a42dee4b6ee1b24cb21 2796351 base required bash_4.2.orig.tar.gz
 f3a255c3ae38c612cefbe035853e8fbc 74773 base required bash_4.2-1.diff.gz
 ba454a71e97f97a72969761b86c96cc6 697572 doc optional bash-doc_4.2-1_all.deb
 4825b660d9af32102a6a8959a4576d41 1471426 shells required bash_4.2-1_i386.deb
 5758c6e244505d69f6cbc55de8f3822b 112028 utils optional 
bash-builtins_4.2-1_i386.deb
 b080b467071ece5f7a052cadc9be53e7 845820 shells optional 
bash-static_4.2-1_i386.deb

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

iEYEARECAAYFAk7WBkQACgkQStlRaw+TLJzgMwCcC6DeSNOos0VDeA+FdBwHQkEA
K8QAn2wZ/1tfe/xeZ5g62sRSfNhwK0XB
=/vvE
-----END PGP SIGNATURE-----



--- End Message ---

Reply via email to