Rename base64 routines to avoid conflict with Solaris built-in functions.
authorTom Lane
Wed, 28 Feb 2018 23:33:45 +0000 (18:33 -0500)
committerTom Lane
Wed, 28 Feb 2018 23:33:45 +0000 (18:33 -0500)
Solaris 11.4 has built-in functions named b64_encode and b64_decode.
Rename ours to something else to avoid the conflict (fortunately,
ours are static so the impact is limited).

One could wish for less duplication of code in this area, but that
would be a larger patch and not very suitable for back-patching.
Since this is a portability fix, we want to put it into all supported
branches.

Report and initial patch by Rainer Orth, reviewed and adjusted a bit
by Michael Paquier

Discussion: https://postgr.es/m/[email protected]

contrib/pgcrypto/pgp-armor.c
src/backend/utils/adt/encode.c

index 40f20550ea1333906a7711b28867eef16e7da473..6dd9b6adcfaec582a6329ccf5b4e05aedeed02bb 100644 (file)
@@ -42,7 +42,7 @@ static const unsigned char _base64[] =
 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
 static int
-b64_encode(const uint8 *src, unsigned len, uint8 *dst)
+pg_base64_encode(const uint8 *src, unsigned len, uint8 *dst)
 {
    uint8      *p,
               *lend = dst + 76;
@@ -92,7 +92,7 @@ b64_encode(const uint8 *src, unsigned len, uint8 *dst)
 
 /* probably should use lookup table */
 static int
-b64_decode(const uint8 *src, unsigned len, uint8 *dst)
+pg_base64_decode(const uint8 *src, unsigned len, uint8 *dst)
 {
    const uint8 *srcend = src + len,
               *s = src;
@@ -160,7 +160,7 @@ b64_decode(const uint8 *src, unsigned len, uint8 *dst)
 }
 
 static unsigned
-b64_enc_len(unsigned srclen)
+pg_base64_enc_len(unsigned srclen)
 {
    /*
     * 3 bytes will be converted to 4, linefeed after 76 chars
@@ -169,7 +169,7 @@ b64_enc_len(unsigned srclen)
 }
 
 static unsigned
-b64_dec_len(unsigned srclen)
+pg_base64_dec_len(unsigned srclen)
 {
    return (srclen * 3) >> 2;
 }
@@ -214,7 +214,7 @@ pgp_armor_encode(const uint8 *src, unsigned len, uint8 *dst)
    memcpy(pos, armor_header, n);
    pos += n;
 
-   n = b64_encode(src, len, pos);
+   n = pg_base64_encode(src, len, pos);
    pos += n;
 
    if (*(pos - 1) != '\n')
@@ -355,12 +355,12 @@ pgp_armor_decode(const uint8 *src, unsigned len, uint8 *dst)
        goto out;
 
    /* decode crc */
-   if (b64_decode(p + 1, 4, buf) != 3)
+   if (pg_base64_decode(p + 1, 4, buf) != 3)
        goto out;
    crc = (((long) buf[0]) << 16) + (((long) buf[1]) << 8) + (long) buf[2];
 
    /* decode data */
-   res = b64_decode(base64_start, base64_end - base64_start, dst);
+   res = pg_base64_decode(base64_start, base64_end - base64_start, dst);
 
    /* check crc */
    if (res >= 0 && crc24(dst, res) != crc)
@@ -372,11 +372,11 @@ out:
 unsigned
 pgp_armor_enc_len(unsigned len)
 {
-   return b64_enc_len(len) + strlen(armor_header) + strlen(armor_footer) + 16;
+   return pg_base64_enc_len(len) + strlen(armor_header) + strlen(armor_footer) + 16;
 }
 
 unsigned
 pgp_armor_dec_len(unsigned len)
 {
-   return b64_dec_len(len);
+   return pg_base64_dec_len(len);
 }
index 46993baa7b534d61b875dd8fa4c34a8bbd7b96ac..847e59c03d33076f320e1aa5a1994385d1d0eb20 100644 (file)
@@ -215,7 +215,7 @@ static const int8 b64lookup[128] = {
 };
 
 static unsigned
-b64_encode(const char *src, unsigned len, char *dst)
+pg_base64_encode(const char *src, unsigned len, char *dst)
 {
    char       *p,
               *lend = dst + 76;
@@ -262,7 +262,7 @@ b64_encode(const char *src, unsigned len, char *dst)
 }
 
 static unsigned
-b64_decode(const char *src, unsigned len, char *dst)
+pg_base64_decode(const char *src, unsigned len, char *dst)
 {
    const char *srcend = src + len,
               *s = src;
@@ -331,14 +331,14 @@ b64_decode(const char *src, unsigned len, char *dst)
 
 
 static unsigned
-b64_enc_len(const char *src, unsigned srclen)
+pg_base64_enc_len(const char *src, unsigned srclen)
 {
    /* 3 bytes will be converted to 4, linefeed after 76 chars */
    return (srclen + 2) * 4 / 3 + srclen / (76 * 3 / 4);
 }
 
 static unsigned
-b64_dec_len(const char *src, unsigned srclen)
+pg_base64_dec_len(const char *src, unsigned srclen)
 {
    return (srclen * 3) >> 2;
 }
@@ -531,7 +531,7 @@ static const struct
    {
        "base64",
        {
-           b64_enc_len, b64_dec_len, b64_encode, b64_decode
+           pg_base64_enc_len, pg_base64_dec_len, pg_base64_encode, pg_base64_decode
        }
    },
    {