See ChangeLog: Thu Jan 21 06:22:10 CET 1999 Werner Koch
[gnupg.git] / g10 / encr-data.c
index e5338c7..c5967c2 100644 (file)
@@ -1,14 +1,14 @@
 /* encr-data.c -  process an encrypted data packet
- *     Copyright (C) 1998 Free Software Foundation, Inc.
+ *     Copyright (C) 1998, 1999 Free Software Foundation, Inc.
  *
- * This file is part of GNUPG.
+ * This file is part of GnuPG.
  *
- * GNUPG is free software; you can redistribute it and/or modify
+ * GnuPG 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 2 of the License, or
  * (at your option) any later version.
  *
- * GNUPG is distributed in the hope that it will be useful,
+ * GnuPG 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.
@@ -71,7 +71,7 @@ decrypt_data( PKT_encrypted *ed, DEK *dek )
     dfx.cipher_hd = cipher_open( dek->algo, CIPHER_MODE_AUTO_CFB, 1 );
     rc = cipher_setkey( dfx.cipher_hd, dek->key, dek->keylen );
     if( rc == G10ERR_WEAK_KEY )
-       log_info(_("WARNING: Message was encrypted with "
+       log_info(_("WARNING: message was encrypted with "
                    "a weak key in the symmetric cipher.\n"));
     else if( rc )
        log_error("key setup failed: %s\n", g10_errstr(rc) );
@@ -79,10 +79,12 @@ decrypt_data( PKT_encrypted *ed, DEK *dek )
     cipher_setiv( dfx.cipher_hd, NULL );
 
     if( ed->len ) {
-       iobuf_set_limit( ed->buf, ed->len );
-
-       for(i=0; i < (blocksize+2) && ed->len; i++, ed->len-- )
-           temp[i] = iobuf_get(ed->buf);
+       for(i=0; i < (blocksize+2) && ed->len; i++, ed->len-- ) {
+           if( (c=iobuf_get(ed->buf)) == -1 )
+               break;
+           else
+               temp[i] = c;
+       }
     }
     else {
        for(i=0; i < (blocksize+2); i++ )
@@ -100,11 +102,6 @@ decrypt_data( PKT_encrypted *ed, DEK *dek )
     }
     iobuf_push_filter( ed->buf, decode_filter, &dfx );
     proc_packets(ed->buf);
-    iobuf_pop_filter( ed->buf, decode_filter, &dfx );
-    if( ed->len )
-       iobuf_set_limit( ed->buf, 0 ); /* disable the readlimit */
-    else
-       iobuf_clear_eof( ed->buf );
     ed->buf = NULL;
     cipher_close(dfx.cipher_hd);
     return 0;