1
0
mirror of https://github.com/moparisthebest/pacman synced 2024-11-11 20:05:07 -05:00

Update base64 PolarSSL code

Also adjust our code using it for the size_t adjustments made by
upstream.

Signed-off-by: Dan McGee <dan@archlinux.org>
This commit is contained in:
Dan McGee 2011-08-14 20:39:43 -05:00
parent 835365b817
commit 83f076d3a8
3 changed files with 20 additions and 17 deletions

View File

@ -65,10 +65,10 @@ static const unsigned char base64_dec_map[128] =
/* /*
* Encode a buffer into base64 format * Encode a buffer into base64 format
*/ */
int base64_encode( unsigned char *dst, int *dlen, int base64_encode( unsigned char *dst, size_t *dlen,
const unsigned char *src, int slen ) const unsigned char *src, size_t slen )
{ {
int i, n; size_t i, n;
int C1, C2, C3; int C1, C2, C3;
unsigned char *p; unsigned char *p;
@ -128,10 +128,10 @@ int base64_encode( unsigned char *dst, int *dlen,
/* /*
* Decode a base64-formatted buffer * Decode a base64-formatted buffer
*/ */
int base64_decode( unsigned char *dst, int *dlen, int base64_decode( unsigned char *dst, size_t *dlen,
const unsigned char *src, int slen ) const unsigned char *src, size_t slen )
{ {
int i, j, n; size_t i, j, n;
unsigned long x; unsigned long x;
unsigned char *p; unsigned char *p;

View File

@ -25,8 +25,10 @@
#ifndef _BASE64_H #ifndef _BASE64_H
#define _BASE64_H #define _BASE64_H
#define POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL 0x0010 #include <string.h>
#define POLARSSL_ERR_BASE64_INVALID_CHARACTER 0x0012
#define POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL -0x0010 /**< Output buffer too small. */
#define POLARSSL_ERR_BASE64_INVALID_CHARACTER -0x0012 /**< Invalid character in input. */
/** /**
* \brief Encode a buffer into base64 format * \brief Encode a buffer into base64 format
@ -43,8 +45,8 @@
* \note Call this function with *dlen = 0 to obtain the * \note Call this function with *dlen = 0 to obtain the
* required buffer size in *dlen * required buffer size in *dlen
*/ */
int base64_encode( unsigned char *dst, int *dlen, int base64_encode( unsigned char *dst, size_t *dlen,
const unsigned char *src, int slen ); const unsigned char *src, size_t slen );
/** /**
* \brief Decode a base64-formatted buffer * \brief Decode a base64-formatted buffer
@ -62,7 +64,7 @@ int base64_encode( unsigned char *dst, int *dlen,
* \note Call this function with *dlen = 0 to obtain the * \note Call this function with *dlen = 0 to obtain the
* required buffer size in *dlen * required buffer size in *dlen
*/ */
int base64_decode( unsigned char *dst, int *dlen, int base64_decode( unsigned char *dst, size_t *dlen,
const unsigned char *src, int slen ); const unsigned char *src, size_t slen );
#endif /* base64.h */ #endif /* base64.h */

View File

@ -168,20 +168,21 @@ error:
* @return 0 on success, 1 on failure to properly decode * @return 0 on success, 1 on failure to properly decode
*/ */
static int decode_signature(const char *base64_data, static int decode_signature(const char *base64_data,
unsigned char **data, int *data_len) { unsigned char **data, size_t *data_len) {
unsigned char *usline; unsigned char *usline;
int len; size_t len;
len = strlen(base64_data); len = strlen(base64_data);
usline = (unsigned char *)base64_data; usline = (unsigned char *)base64_data;
int ret, destlen = 0; int ret;
size_t destlen = 0;
/* get the necessary size for the buffer by passing 0 */ /* get the necessary size for the buffer by passing 0 */
ret = base64_decode(NULL, &destlen, usline, len); ret = base64_decode(NULL, &destlen, usline, len);
if(ret != 0 && ret != POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL) { if(ret != 0 && ret != POLARSSL_ERR_BASE64_BUFFER_TOO_SMALL) {
goto error; goto error;
} }
/* alloc our memory and repeat the call to decode */ /* alloc our memory and repeat the call to decode */
MALLOC(*data, (size_t)destlen, goto error); MALLOC(*data, destlen, goto error);
ret = base64_decode(*data, &destlen, usline, len); ret = base64_decode(*data, &destlen, usline, len);
if(ret != 0) { if(ret != 0) {
goto error; goto error;
@ -270,7 +271,7 @@ int _alpm_gpgme_checksig(alpm_handle_t *handle, const char *path,
/* next create data object for the signature */ /* next create data object for the signature */
if(base64_sig) { if(base64_sig) {
/* memory-based, we loaded it from a sync DB */ /* memory-based, we loaded it from a sync DB */
int data_len; size_t data_len;
int decode_ret = decode_signature(base64_sig, int decode_ret = decode_signature(base64_sig,
&decoded_sigdata, &data_len); &decoded_sigdata, &data_len);
if(decode_ret) { if(decode_ret) {