* (c) 2004 Straylight/Edgeware
*/
-/*----- Licensing notice --------------------------------------------------*
+/*----- Licensing notice --------------------------------------------------*
*
* This file is part of Catacomb.
*
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
- *
+ *
* Catacomb 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 Library General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Library General Public
* License along with Catacomb; if not, write to the Free
* Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
const char *err;
int i;
int en;
- size_t n;
+ size_t n, chsz;
dstr d = DSTR_INIT;
octet *tag, *ct;
buf b;
{ "sign-key", OPTF_ARGREQ, 0, 's' },
{ "armour", 0, 0, 'a' },
{ "armor", 0, 0, 'a' },
- { "format", OPTF_ARGREQ, 0, 'f' },
- { "output", OPTF_ARGREQ, 0, 'o' },
+ { "format", OPTF_ARGREQ, 0, 'f' },
+ { "output", OPTF_ARGREQ, 0, 'o' },
{ "nocheck", 0, 0, 'C' },
{ 0, 0, 0, 0 }
};
buf_init(&b, d.buf, d.len);
BSTEP(&b, d.len);
chunk_write(e, &b);
- }
+ }
/* --- Now do the main crypto --- */
assert(GC_CLASS(c)->blksz <= sizeof(bb));
dstr_ensure(&d, sizeof(bb) + GM_CLASS(m)->hashsz);
seq = 0;
+ chsz = MASK16 - GM_CLASS(m)->hashsz;
for (;;) {
h = GM_INIT(m);
GH_HASHU32(h, seq);
GC_ENCRYPT(cx, 0, bb, GC_CLASS(c)->blksz);
GC_SETIV(c, bb);
}
- n = fread(bb, 1, sizeof(bb), fp);
+ n = fread(bb, 1, chsz, fp);
if (!n) break;
buf_init(&b, d.buf, d.sz);
tag = buf_get(&b, GM_CLASS(m)->hashsz);
{ "verbose", 0, 0, 'v' },
{ "quiet", 0, 0, 'q' },
{ "nocheck", 0, 0, 'C' },
- { "format", OPTF_ARGREQ, 0, 'f' },
- { "output", OPTF_ARGREQ, 0, 'o' },
+ { "format", OPTF_ARGREQ, 0, 'f' },
+ { "output", OPTF_ARGREQ, 0, 'o' },
{ 0, 0, 0, 0 }
};
i = mdwopt(argc, argv, "abf:o:qvC", opt, 0, 0, 0);
die(EXIT_FAILURE, "error unbuffering output: %s", strerror(errno));
}
if (ofp && (fflush(ofp) || ferror(ofp) || fclose(ofp)))
- die(EXIT_FAILURE, "error writing output: %s", strerror(errno));
+ die(EXIT_FAILURE, "error writing output: %s", strerror(errno));
e->ops->decdone(e);
if (verb && ofp != stdout)