* construct "struct {} list [] = {}" confuses pgindent - split those.
  It was a bad style to begin with, and now several loops can be clearer.
* pgcrypto.c: Fix function comments
* crypt-gensalt.c, crypt-blowfish.c: stop messing with errno
* openssl.c: use px_free instead pfree
* px.h: make redefining px_alloc/px_realloc/px_free easier


Index: pgsql/contrib/pgcrypto/openssl.c
===================================================================
*** pgsql.orig/contrib/pgcrypto/openssl.c
--- pgsql/contrib/pgcrypto/openssl.c
*************** gen_ossl_free(PX_Cipher * c)
*** 208,215 ****
        ossldata   *od = (ossldata *) c->ptr;
  
        memset(od, 0, sizeof(*od));
!       pfree(od);
!       pfree(c);
  }
  
  /* Blowfish */
--- 208,215 ----
        ossldata   *od = (ossldata *) c->ptr;
  
        memset(od, 0, sizeof(*od));
!       px_free(od);
!       px_free(c);
  }
  
  /* Blowfish */
*************** static const struct ossl_cipher ossl_cas
*** 473,509 ****
  /*
   * Special handlers
   */
! static const struct
  {
        const char *name;
        const struct ossl_cipher *ciph;
! }     ossl_cipher_types[] =
  
! {
!       {
!               "bf-cbc", &ossl_bf_cbc
!       },
!       {
!               "bf-ecb", &ossl_bf_ecb
!       },
!       {
!               "bf-cfb", &ossl_bf_cfb
!       },
!       {
!               "des-ecb", &ossl_des_ecb
!       },
!       {
!               "des-cbc", &ossl_des_cbc
!       },
!       {
!               "cast5-ecb", &ossl_cast_ecb
!       },
!       {
!               "cast5-cbc", &ossl_cast_cbc
!       },
!       {
!               NULL
!       }
  };
  
  /* PUBLIC functions */
--- 473,493 ----
  /*
   * Special handlers
   */
! struct ossl_cipher_lookup
  {
        const char *name;
        const struct ossl_cipher *ciph;
! };
  
! static const struct ossl_cipher_lookup ossl_cipher_types[] = {
!       {"bf-cbc", &ossl_bf_cbc},
!       {"bf-ecb", &ossl_bf_ecb},
!       {"bf-cfb", &ossl_bf_cfb},
!       {"des-ecb", &ossl_des_ecb},
!       {"des-cbc", &ossl_des_cbc},
!       {"cast5-ecb", &ossl_cast_ecb},
!       {"cast5-cbc", &ossl_cast_cbc},
!       {NULL}
  };
  
  /* PUBLIC functions */
*************** static const struct
*** 511,548 ****
  int
  px_find_cipher(const char *name, PX_Cipher ** res)
  {
!       unsigned        i;
!       PX_Cipher  *c = NULL,
!                          *csrc;
        ossldata   *od;
-       const struct ossl_cipher *ossl_ciph = NULL;
  
        name = px_resolve_alias(ossl_aliases, name);
!       for (i = 0; ossl_cipher_types[i].name; i++)
!       {
!               if (!strcmp(ossl_cipher_types[i].name, name))
!               {
!                       ossl_ciph = ossl_cipher_types[i].ciph;
                        break;
!               }
!       }
!       if (ossl_ciph == NULL)
                return -1;
  
        od = px_alloc(sizeof(*od));
        memset(od, 0, sizeof(*od));
!       od->ciph = ossl_ciph;
! 
!       csrc = NULL;
  
        c = px_alloc(sizeof(*c));
        c->block_size = gen_ossl_block_size;
        c->key_size = gen_ossl_key_size;
        c->iv_size = gen_ossl_iv_size;
        c->free = gen_ossl_free;
!       c->init = ossl_ciph->init;
!       c->encrypt = ossl_ciph->encrypt;
!       c->decrypt = ossl_ciph->decrypt;
        c->ptr = od;
  
        *res = c;
--- 495,523 ----
  int
  px_find_cipher(const char *name, PX_Cipher ** res)
  {
!       const struct ossl_cipher_lookup *i;
!       PX_Cipher  *c = NULL;
        ossldata   *od;
  
        name = px_resolve_alias(ossl_aliases, name);
!       for (i = ossl_cipher_types; i->name; i++)
!               if (!strcmp(i->name, name))
                        break;
!       if (i->name == NULL)
                return -1;
  
        od = px_alloc(sizeof(*od));
        memset(od, 0, sizeof(*od));
!       od->ciph = i->ciph;
  
        c = px_alloc(sizeof(*c));
        c->block_size = gen_ossl_block_size;
        c->key_size = gen_ossl_key_size;
        c->iv_size = gen_ossl_iv_size;
        c->free = gen_ossl_free;
!       c->init = od->ciph->init;
!       c->encrypt = od->ciph->encrypt;
!       c->decrypt = od->ciph->decrypt;
        c->ptr = od;
  
        *res = c;
Index: pgsql/contrib/pgcrypto/px-crypt.c
===================================================================
*** pgsql.orig/contrib/pgcrypto/px-crypt.c
--- pgsql/contrib/pgcrypto/px-crypt.c
*************** run_crypt_bf(const char *psw, const char
*** 69,120 ****
        return res;
  }
  
! static struct
  {
        char       *id;
        unsigned        id_len;
        char       *(*crypt) (const char *psw, const char *salt,
                                                                          char 
*buf, unsigned len);
! }     px_crypt_list[] =
  
! {
!       {
!               "$2a$", 4, run_crypt_bf
!       },
!       {
!               "$2$", 3, NULL
!       },                                                      /* N/A */
!       {
!               "$1$", 3, run_crypt_md5
!       },
!       {
!               "_", 1, run_crypt_des
!       },
!       {
!               "", 0, run_crypt_des
!       },
!       {
!               NULL, 0, NULL
!       }
  };
  
  char *
  px_crypt(const char *psw, const char *salt, char *buf, unsigned len)
  {
!       int                     i;
  
!       for (i = 0; px_crypt_list[i].id; i++)
        {
!               if (!px_crypt_list[i].id_len)
                        break;
!               if (!strncmp(salt, px_crypt_list[i].id, 
px_crypt_list[i].id_len))
                        break;
        }
  
!       if (px_crypt_list[i].crypt == NULL)
                return NULL;
  
!       return px_crypt_list[i].crypt(psw, salt, buf, len);
  }
  
  #else                                                 /* PX_SYSTEM_CRYPT */
--- 69,109 ----
        return res;
  }
  
! struct px_crypt_algo
  {
        char       *id;
        unsigned        id_len;
        char       *(*crypt) (const char *psw, const char *salt,
                                                                          char 
*buf, unsigned len);
! };
  
! static const struct px_crypt_algo
! px_crypt_list[] = {
!       {"$2a$", 4, run_crypt_bf},
!       {"$2$", 3, NULL},                                                       
/* N/A */
!       {"$1$", 3, run_crypt_md5},
!       {"_", 1, run_crypt_des},
!       {"", 0, run_crypt_des},
!       {NULL, 0, NULL}
  };
  
  char *
  px_crypt(const char *psw, const char *salt, char *buf, unsigned len)
  {
!       const struct px_crypt_algo *c;
  
!       for (c = px_crypt_list; c->id; c++)
        {
!               if (!c->id_len)
                        break;
!               if (!strncmp(salt, c->id, c->id_len))
                        break;
        }
  
!       if (c->crypt == NULL)
                return NULL;
  
!       return c->crypt(psw, salt, buf, len);
  }
  
  #else                                                 /* PX_SYSTEM_CRYPT */
*************** static struct generator gen_list[] = {
*** 155,161 ****
        {"md5", _crypt_gensalt_md5_rn, 6, 0, 0, 0},
        {"xdes", _crypt_gensalt_extended_rn, 3, PX_XDES_ROUNDS, 1, 0xFFFFFF},
        {"bf", _crypt_gensalt_blowfish_rn, 16, PX_BF_ROUNDS, 4, 31},
!       {NULL, NULL, 0, 0, 0}
  };
  
  unsigned
--- 144,150 ----
        {"md5", _crypt_gensalt_md5_rn, 6, 0, 0, 0},
        {"xdes", _crypt_gensalt_extended_rn, 3, PX_XDES_ROUNDS, 1, 0xFFFFFF},
        {"bf", _crypt_gensalt_blowfish_rn, 16, PX_BF_ROUNDS, 4, 31},
!       {NULL, NULL, 0, 0, 0, 0}
  };
  
  unsigned
Index: pgsql/contrib/pgcrypto/internal.c
===================================================================
*** pgsql.orig/contrib/pgcrypto/internal.c
--- pgsql/contrib/pgcrypto/internal.c
***************
*** 57,78 ****
  static void init_md5(PX_MD * h);
  static void init_sha1(PX_MD * h);
  
! static struct int_digest
  {
        char       *name;
        void            (*init) (PX_MD * h);
! }     int_digest_list[] =
  
! {
!       {
!               "md5", init_md5
!       },
!       {
!               "sha1", init_sha1
!       },
!       {
!               NULL, NULL
!       }
  };
  
  /* MD5 */
--- 57,73 ----
  static void init_md5(PX_MD * h);
  static void init_sha1(PX_MD * h);
  
! struct int_digest
  {
        char       *name;
        void            (*init) (PX_MD * h);
! };
  
! static const struct int_digest
! int_digest_list[] = {
!       { "md5", init_md5 },
!       { "sha1", init_sha1 },
!       { NULL, NULL }
  };
  
  /* MD5 */
*************** bf_cbc_load(void)
*** 516,546 ****
        return bf_load(MODE_CBC);
  }
  
! static struct
  {
        char       *name;
        PX_Cipher  *(*load) (void);
! }     int_ciphers[] =
  
! {
!       {
!               "bf-cbc", bf_cbc_load
!       },
!       {
!               "bf-ecb", bf_ecb_load
!       },
!       {
!               "aes-128-cbc", rj_128_cbc
!       },
!       {
!               "aes-128-ecb", rj_128_ecb
!       },
!       {
!               NULL, NULL
!       }
  };
  
! static PX_Alias int_aliases[] = {
        {"bf", "bf-cbc"},
        {"blowfish", "bf-cbc"},
        {"aes", "aes-128-cbc"},
--- 511,532 ----
        return bf_load(MODE_CBC);
  }
  
! struct int_cipher
  {
        char       *name;
        PX_Cipher  *(*load) (void);
! };
  
! static const struct int_cipher
! int_ciphers[] = {
!       { "bf-cbc", bf_cbc_load },
!       { "bf-ecb", bf_ecb_load },
!       { "aes-128-cbc", rj_128_cbc },
!       { "aes-128-ecb", rj_128_ecb },
!       { NULL, NULL }
  };
  
! static const PX_Alias int_aliases[] = {
        {"bf", "bf-cbc"},
        {"blowfish", "bf-cbc"},
        {"aes", "aes-128-cbc"},
*************** static PX_Alias int_aliases[] = {
*** 557,563 ****
  int
  px_find_digest(const char *name, PX_MD ** res)
  {
!       struct int_digest *p;
        PX_MD      *h;
  
        for (p = int_digest_list; p->name; p++)
--- 543,549 ----
  int
  px_find_digest(const char *name, PX_MD ** res)
  {
!       const struct int_digest *p;
        PX_MD      *h;
  
        for (p = int_digest_list; p->name; p++)
Index: pgsql/contrib/pgcrypto/pgcrypto.c
===================================================================
*** pgsql.orig/contrib/pgcrypto/pgcrypto.c
--- pgsql/contrib/pgcrypto/pgcrypto.c
*************** typedef int (*PFN) (const char *name, vo
*** 46,52 ****
  static void *
                        find_provider(text *name, PFN pf, char *desc, int 
silent);
  
! /* SQL function: hash(text, text) returns text */
  PG_FUNCTION_INFO_V1(pg_digest);
  
  Datum
--- 46,52 ----
  static void *
                        find_provider(text *name, PFN pf, char *desc, int 
silent);
  
! /* SQL function: hash(bytea, text) returns bytea */
  PG_FUNCTION_INFO_V1(pg_digest);
  
  Datum
*************** pg_digest_exists(PG_FUNCTION_ARGS)
*** 111,117 ****
        PG_RETURN_BOOL(true);
  }
  
! /* SQL function: hmac(data:text, key:text, type:text) */
  PG_FUNCTION_INFO_V1(pg_hmac);
  
  Datum
--- 111,117 ----
        PG_RETURN_BOOL(true);
  }
  
! /* SQL function: hmac(data:bytea, key:bytea, type:text) returns bytea */
  PG_FUNCTION_INFO_V1(pg_hmac);
  
  Datum
*************** pg_crypt(PG_FUNCTION_ARGS)
*** 316,322 ****
        PG_RETURN_TEXT_P(res);
  }
  
! /* SQL function: pg_encrypt(text, text, text) returns text */
  PG_FUNCTION_INFO_V1(pg_encrypt);
  
  Datum
--- 316,322 ----
        PG_RETURN_TEXT_P(res);
  }
  
! /* SQL function: pg_encrypt(bytea, bytea, text) returns bytea */
  PG_FUNCTION_INFO_V1(pg_encrypt);
  
  Datum
*************** pg_encrypt(PG_FUNCTION_ARGS)
*** 367,373 ****
        PG_RETURN_BYTEA_P(res);
  }
  
! /* SQL function: pg_decrypt(text, text, text) returns text */
  PG_FUNCTION_INFO_V1(pg_decrypt);
  
  Datum
--- 367,373 ----
        PG_RETURN_BYTEA_P(res);
  }
  
! /* SQL function: pg_decrypt(bytea, bytea, text) returns bytea */
  PG_FUNCTION_INFO_V1(pg_decrypt);
  
  Datum
*************** pg_decrypt(PG_FUNCTION_ARGS)
*** 417,423 ****
        PG_RETURN_BYTEA_P(res);
  }
  
! /* SQL function: pg_encrypt(text, text, text) returns text */
  PG_FUNCTION_INFO_V1(pg_encrypt_iv);
  
  Datum
--- 417,423 ----
        PG_RETURN_BYTEA_P(res);
  }
  
! /* SQL function: pg_encrypt_iv(bytea, bytea, bytea, text) returns bytea */
  PG_FUNCTION_INFO_V1(pg_encrypt_iv);
  
  Datum
*************** pg_encrypt_iv(PG_FUNCTION_ARGS)
*** 473,479 ****
        PG_RETURN_BYTEA_P(res);
  }
  
! /* SQL function: pg_decrypt_iv(text, text, text) returns text */
  PG_FUNCTION_INFO_V1(pg_decrypt_iv);
  
  Datum
--- 473,479 ----
        PG_RETURN_BYTEA_P(res);
  }
  
! /* SQL function: pg_decrypt_iv(bytea, bytea, bytea, text) returns bytea */
  PG_FUNCTION_INFO_V1(pg_decrypt_iv);
  
  Datum
*************** pg_decrypt_iv(PG_FUNCTION_ARGS)
*** 529,535 ****
        PG_RETURN_BYTEA_P(res);
  }
  
! /* SQL function: pg_decrypt(text, text, text) returns text */
  PG_FUNCTION_INFO_V1(pg_cipher_exists);
  
  Datum
--- 529,535 ----
        PG_RETURN_BYTEA_P(res);
  }
  
! /* SQL function: pg_cipher_exists(text) returns bool */
  PG_FUNCTION_INFO_V1(pg_cipher_exists);
  
  Datum
*************** pg_cipher_exists(PG_FUNCTION_ARGS)
*** 550,556 ****
        PG_RETURN_BOOL((c != NULL) ? true : false);
  }
  
- 
  static void *
  find_provider(text *name,
                          PFN provider_lookup,
--- 550,555 ----
Index: pgsql/contrib/pgcrypto/crypt-blowfish.c
===================================================================
*** pgsql.orig/contrib/pgcrypto/crypt-blowfish.c
--- pgsql/contrib/pgcrypto/crypt-blowfish.c
***************
*** 35,46 ****
  #include "px.h"
  #include "px-crypt.h"
  
- #define __set_errno(v)
- 
- #ifndef __set_errno
- #define __set_errno(val) errno = (val)
- #endif
- 
  #ifdef __i386__
  #define BF_ASM                                0       /* 1 */
  #define BF_SCALE                      1
--- 35,40 ----
*************** _crypt_blowfish_rn(const char *key, cons
*** 600,609 ****
        int                     i;
  
        if (size < 7 + 22 + 31 + 1)
-       {
-               __set_errno(ERANGE);
                return NULL;
-       }
  
        if (setting[0] != '$' ||
                setting[1] != '2' ||
--- 594,600 ----
*************** _crypt_blowfish_rn(const char *key, cons
*** 613,619 ****
                setting[5] < '0' || setting[5] > '9' ||
                setting[6] != '$')
        {
-               __set_errno(EINVAL);
                return NULL;
        }
  
--- 604,609 ----
*************** _crypt_blowfish_rn(const char *key, cons
*** 621,627 ****
        if (count < 16 || BF_decode(data.binary.salt, &setting[7], 16))
        {
                memset(data.binary.salt, 0, sizeof(data.binary.salt));
-               __set_errno(EINVAL);
                return NULL;
        }
        BF_swap(data.binary.salt, 4);
--- 611,616 ----
Index: pgsql/contrib/pgcrypto/crypt-gensalt.c
===================================================================
*** pgsql.orig/contrib/pgcrypto/crypt-gensalt.c
--- pgsql/contrib/pgcrypto/crypt-gensalt.c
***************
*** 15,25 ****
  #include "px.h"
  #include "px-crypt.h"
  
- #include <errno.h>
- #ifndef __set_errno
- #define __set_errno(val) (errno = (val))
- #endif
- 
  typedef unsigned int BF_word;
  
  unsigned char _crypt_itoa64[64 + 1] =
--- 15,20 ----
*************** _crypt_gensalt_traditional_rn(unsigned l
*** 33,39 ****
        {
                if (output_size > 0)
                        output[0] = '\0';
-               __set_errno((output_size < 2 + 1) ? ERANGE : EINVAL);
                return NULL;
        }
  
--- 28,33 ----
*************** _crypt_gensalt_extended_rn(unsigned long
*** 57,63 ****
        {
                if (output_size > 0)
                        output[0] = '\0';
-               __set_errno((output_size < 1 + 4 + 4 + 1) ? ERANGE : EINVAL);
                return NULL;
        }
  
--- 51,56 ----
*************** _crypt_gensalt_md5_rn(unsigned long coun
*** 91,97 ****
        {
                if (output_size > 0)
                        output[0] = '\0';
-               __set_errno((output_size < 3 + 4 + 1) ? ERANGE : EINVAL);
                return NULL;
        }
  
--- 84,89 ----
*************** _crypt_gensalt_blowfish_rn(unsigned long
*** 173,179 ****
        {
                if (output_size > 0)
                        output[0] = '\0';
-               __set_errno((output_size < 7 + 22 + 1) ? ERANGE : EINVAL);
                return NULL;
        }
  
--- 165,170 ----
Index: pgsql/contrib/pgcrypto/px.h
===================================================================
*** pgsql.orig/contrib/pgcrypto/px.h
--- pgsql/contrib/pgcrypto/px.h
***************
*** 43,63 ****
  #endif
  
  
! #if 1
  
  #define px_alloc(s) palloc(s)
! #define px_realloc(p, s) prealloc(p, s)
  #define px_free(p)    pfree(p)
  
  #else
  
! void     *xalloc(size_t s);
! void     *xrealloc(void *p, size_t s);
! void          xfree(void *p);
! 
! #define px_alloc(s) xalloc(s)
! #define px_realloc(p, s) xrealloc(p, s)
! #define px_free(p)    xfree(p)
  #endif
  
  /* max len of 'type' parms */
--- 43,60 ----
  #endif
  
  
! #ifndef PX_OWN_ALLOC
  
  #define px_alloc(s) palloc(s)
! #define px_realloc(p, s) repalloc(p, s)
  #define px_free(p)    pfree(p)
  
  #else
  
! void     *px_alloc(size_t s);
! void     *px_realloc(void *p, size_t s);
! void          px_free(void *p);
! 
  #endif
  
  /* max len of 'type' parms */

--

---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]

Reply via email to