evp: prevent underflow in base64 decoding
[openssl.git] / crypto / des / enc_writ.c
index 4d3452724ecf7f396b64fe111f971bc25934e058..2353ac1e892fd3310b68450293ad030cfc70147e 100644 (file)
@@ -66,9 +66,9 @@
 /*
  * WARNINGS:
  *
- *  -  The data format used by des_enc_write() and des_enc_read()
+ *  -  The data format used by DES_enc_write() and DES_enc_read()
  *     has a cryptographic weakness: When asked to write more
- *     than MAXWRITE bytes, des_enc_write will split the data
+ *     than MAXWRITE bytes, DES_enc_write will split the data
  *     into several chunks that are all encrypted
  *     using the same IV.  So don't use these functions unless you
  *     are sure you know what you do (in which case you might
  *  -  This code cannot handle non-blocking sockets.
  */
 
-int des_enc_write(int fd, const void *_buf, int len,
-                 des_key_schedule sched, des_cblock *iv)
+int DES_enc_write(int fd, const void *_buf, int len,
+                 DES_key_schedule *sched, DES_cblock *iv)
        {
+#if defined(OPENSSL_NO_POSIX_IO)
+       return (-1);
+#else
 #ifdef _LIBC
        extern unsigned long time();
        extern int write();
@@ -95,7 +98,7 @@ int des_enc_write(int fd, const void *_buf, int len,
 
        if (outbuf == NULL)
                {
-               outbuf=Malloc(BSIZE+HDRSIZE);
+               outbuf=OPENSSL_malloc(BSIZE+HDRSIZE);
                if (outbuf == NULL) return(-1);
                }
        /* If we are sending less than 8 bytes, the same char will look
@@ -111,7 +114,7 @@ int des_enc_write(int fd, const void *_buf, int len,
                j=0;
                for (i=0; i<len; i+=k)
                        {
-                       k=des_enc_write(fd,&(buf[i]),
+                       k=DES_enc_write(fd,&(buf[i]),
                                ((len-i) > MAXWRITE)?MAXWRITE:(len-i),sched,iv);
                        if (k < 0)
                                return(k);
@@ -139,11 +142,11 @@ int des_enc_write(int fd, const void *_buf, int len,
                rnum=((len+7)/8*8); /* round up to nearest eight */
                }
 
-       if (des_rw_mode & DES_PCBC_MODE)
-               des_pcbc_encrypt(cp,&(outbuf[HDRSIZE]),(len<8)?8:len,sched,iv,
+       if (DES_rw_mode & DES_PCBC_MODE)
+               DES_pcbc_encrypt(cp,&(outbuf[HDRSIZE]),(len<8)?8:len,sched,iv,
                                 DES_ENCRYPT); 
        else
-               des_cbc_encrypt(cp,&(outbuf[HDRSIZE]),(len<8)?8:len,sched,iv,
+               DES_cbc_encrypt(cp,&(outbuf[HDRSIZE]),(len<8)?8:len,sched,iv,
                                DES_ENCRYPT); 
 
        /* output */
@@ -153,7 +156,11 @@ int des_enc_write(int fd, const void *_buf, int len,
                {
                /* eay 26/08/92 I was not doing writing from where we
                 * got up to. */
+#ifndef _WIN32
                i=write(fd,(void *)&(outbuf[j]),outnum-j);
+#else
+               i=_write(fd,(void *)&(outbuf[j]),outnum-j);
+#endif
                if (i == -1)
                        {
 #ifdef EINTR
@@ -168,4 +175,5 @@ int des_enc_write(int fd, const void *_buf, int len,
                }
 
        return(len);
+#endif /* OPENSSL_NO_POSIX_IO */
        }