Skip to content
Snippets Groups Projects
Select Git revision
  • a8e38bdf161ecd67cecc30c255775ad261aaae9f
  • master default protected
  • hpke
  • ppc-chacha-4core
  • delete-internal-name-mangling
  • master-updates
  • ppc-gcm
  • ppc-chacha-2core
  • refactor-ecc-mod
  • ppc-chacha-core
  • use-mpn_cnd-functions
  • optimize-ecc-invert
  • default-m4-quote-char
  • power-asm-wip
  • test-fat
  • chacha-3core-neon
  • x86_64-salsa20-2core
  • salsa20-2core-neon
  • bcrypt
  • arm-salsa20-chacha-vsra
  • test-shlib-dir
  • nettle_3.6_release_20200429
  • nettle_3.6rc3
  • nettle_3.6rc2
  • nettle_3.6rc1
  • nettle_3.5.1_release_20190627
  • nettle_3.5_release_20190626
  • nettle_3.5rc1
  • nettle_3.4.1_release_20181204
  • nettle_3.4.1rc1
  • nettle_3.4_release_20171119
  • nettle_3.4rc2
  • nettle_3.4rc1
  • nettle_3.3_release_20161001
  • nettle_3.2_release_20160128
  • nettle_3.1.1_release_20150424
  • nettle_3.1_release_20150407
  • nettle_3.1rc3
  • nettle_3.1rc2
  • nettle_3.1rc1
  • nettle_3.0_release_20140607
41 results

buffer-init.c

Blame
  • Forked from Nettle / nettle
    Source project has a limited visibility.
    • Niels Möller's avatar
      c5c15385
      * Reordered includes in most or all .c-files. All should now include · c5c15385
      Niels Möller authored
      config.h.
      
      Rev: src/nettle/ChangeLog:1.195
      Rev: src/nettle/aes-decrypt-table.c:1.4
      Rev: src/nettle/aes-decrypt.c:1.5
      Rev: src/nettle/aes-encrypt-table.c:1.4
      Rev: src/nettle/aes-encrypt.c:1.5
      Rev: src/nettle/aes-meta.c:1.3
      Rev: src/nettle/aes-set-decrypt-key.c:1.2
      Rev: src/nettle/aes-set-encrypt-key.c:1.2
      Rev: src/nettle/aes.c:1.12
      Rev: src/nettle/aesdata.c:1.2
      Rev: src/nettle/arcfour-meta.c:1.2
      Rev: src/nettle/arcfour.c:1.3
      Rev: src/nettle/base16-decode.c:1.2
      Rev: src/nettle/base16-encode.c:1.2
      Rev: src/nettle/base16-meta.c:1.3
      Rev: src/nettle/base64-decode.c:1.5
      Rev: src/nettle/base64-encode.c:1.3
      Rev: src/nettle/base64-meta.c:1.4
      Rev: src/nettle/bignum-random.c:1.3
      Rev: src/nettle/bignum.c:1.7
      Rev: src/nettle/blowfish.c:1.4
      Rev: src/nettle/buffer-init.c:1.3
      Rev: src/nettle/buffer.c:1.8
      Rev: src/nettle/cast128-meta.c:1.3
      Rev: src/nettle/cast128.c:1.4
      Rev: src/nettle/cbc.c:1.6
      Rev: src/nettle/des-compat.c:1.10
      Rev: src/nettle/des.c:1.7
      Rev: src/nettle/des3.c:1.2
      Rev: src/nettle/dsa-keygen.c:1.6
      Rev: src/nettle/dsa-sign.c:1.7
      Rev: src/nettle/dsa-verify.c:1.4
      Rev: src/nettle/dsa.c:1.5
      Rev: src/nettle/examples/io.c:1.4
      Rev: src/nettle/examples/nettle-benchmark.c:1.8
      Rev: src/nettle/examples/nettle-openssl.c:1.2
      Rev: src/nettle/examples/rsa-keygen.c:1.10
      Rev: src/nettle/examples/rsa-sign.c:1.5
      Rev: src/nettle/examples/rsa-verify.c:1.4
      Rev: src/nettle/hmac-md5.c:1.5
      Rev: src/nettle/hmac-sha1.c:1.2
      Rev: src/nettle/hmac-sha256.c:1.2
      Rev: src/nettle/hmac.c:1.4
      Rev: src/nettle/knuth-lfib.c:1.2
      Rev: src/nettle/md5-compat.c:1.3
      Rev: src/nettle/md5-meta.c:1.2
      Rev: src/nettle/md5.c:1.6
      Rev: src/nettle/memxor.c:1.2
      Rev: src/nettle/nettle-internal.c:1.3
      Rev: src/nettle/pgp-encode.c:1.4
      Rev: src/nettle/pkcs1-rsa-md5.c:1.2
      Rev: src/nettle/pkcs1-rsa-sha1.c:1.2
      Rev: src/nettle/pkcs1.c:1.2
      Rev: src/nettle/realloc.c:1.3
      Rev: src/nettle/rsa-compat.c:1.8
      Rev: src/nettle/rsa-decrypt.c:1.4
      Rev: src/nettle/rsa-encrypt.c:1.5
      Rev: src/nettle/rsa-keygen.c:1.5
      Rev: src/nettle/rsa-md5-sign.c:1.2
      Rev: src/nettle/rsa-md5-verify.c:1.2
      Rev: src/nettle/rsa-sha1-sign.c:1.2
      Rev: src/nettle/rsa-sha1-verify.c:1.2
      Rev: src/nettle/rsa-sign.c:1.3
      Rev: src/nettle/rsa-verify.c:1.2
      Rev: src/nettle/rsa.c:1.12
      Rev: src/nettle/rsa2openpgp.c:1.2
      Rev: src/nettle/rsa2sexp.c:1.7
      Rev: src/nettle/serpent-meta.c:1.2
      Rev: src/nettle/serpent.c:1.4
      Rev: src/nettle/sexp-format.c:1.9
      Rev: src/nettle/sexp-transport-format.c:1.2
      Rev: src/nettle/sexp-transport.c:1.4
      Rev: src/nettle/sexp.c:1.14
      Rev: src/nettle/sexp2bignum.c:1.5
      Rev: src/nettle/sexp2dsa.c:1.4
      Rev: src/nettle/sexp2rsa.c:1.11
      Rev: src/nettle/sha1-meta.c:1.2
      Rev: src/nettle/sha1.c:1.8
      Rev: src/nettle/sha256-meta.c:1.2
      Rev: src/nettle/sha256.c:1.3
      Rev: src/nettle/tools/input.c:1.2
      Rev: src/nettle/tools/misc.c:1.2
      Rev: src/nettle/tools/output.c:1.3
      Rev: src/nettle/tools/parse.c:1.2
      Rev: src/nettle/tools/sexp-conv.c:1.14
      Rev: src/nettle/twofish-meta.c:1.2
      Rev: src/nettle/twofish.c:1.6
      Rev: src/nettle/yarrow256.c:1.17
      Rev: src/nettle/yarrow_key_event.c:1.4
      c5c15385
      History
      * Reordered includes in most or all .c-files. All should now include
      Niels Möller authored
      config.h.
      
      Rev: src/nettle/ChangeLog:1.195
      Rev: src/nettle/aes-decrypt-table.c:1.4
      Rev: src/nettle/aes-decrypt.c:1.5
      Rev: src/nettle/aes-encrypt-table.c:1.4
      Rev: src/nettle/aes-encrypt.c:1.5
      Rev: src/nettle/aes-meta.c:1.3
      Rev: src/nettle/aes-set-decrypt-key.c:1.2
      Rev: src/nettle/aes-set-encrypt-key.c:1.2
      Rev: src/nettle/aes.c:1.12
      Rev: src/nettle/aesdata.c:1.2
      Rev: src/nettle/arcfour-meta.c:1.2
      Rev: src/nettle/arcfour.c:1.3
      Rev: src/nettle/base16-decode.c:1.2
      Rev: src/nettle/base16-encode.c:1.2
      Rev: src/nettle/base16-meta.c:1.3
      Rev: src/nettle/base64-decode.c:1.5
      Rev: src/nettle/base64-encode.c:1.3
      Rev: src/nettle/base64-meta.c:1.4
      Rev: src/nettle/bignum-random.c:1.3
      Rev: src/nettle/bignum.c:1.7
      Rev: src/nettle/blowfish.c:1.4
      Rev: src/nettle/buffer-init.c:1.3
      Rev: src/nettle/buffer.c:1.8
      Rev: src/nettle/cast128-meta.c:1.3
      Rev: src/nettle/cast128.c:1.4
      Rev: src/nettle/cbc.c:1.6
      Rev: src/nettle/des-compat.c:1.10
      Rev: src/nettle/des.c:1.7
      Rev: src/nettle/des3.c:1.2
      Rev: src/nettle/dsa-keygen.c:1.6
      Rev: src/nettle/dsa-sign.c:1.7
      Rev: src/nettle/dsa-verify.c:1.4
      Rev: src/nettle/dsa.c:1.5
      Rev: src/nettle/examples/io.c:1.4
      Rev: src/nettle/examples/nettle-benchmark.c:1.8
      Rev: src/nettle/examples/nettle-openssl.c:1.2
      Rev: src/nettle/examples/rsa-keygen.c:1.10
      Rev: src/nettle/examples/rsa-sign.c:1.5
      Rev: src/nettle/examples/rsa-verify.c:1.4
      Rev: src/nettle/hmac-md5.c:1.5
      Rev: src/nettle/hmac-sha1.c:1.2
      Rev: src/nettle/hmac-sha256.c:1.2
      Rev: src/nettle/hmac.c:1.4
      Rev: src/nettle/knuth-lfib.c:1.2
      Rev: src/nettle/md5-compat.c:1.3
      Rev: src/nettle/md5-meta.c:1.2
      Rev: src/nettle/md5.c:1.6
      Rev: src/nettle/memxor.c:1.2
      Rev: src/nettle/nettle-internal.c:1.3
      Rev: src/nettle/pgp-encode.c:1.4
      Rev: src/nettle/pkcs1-rsa-md5.c:1.2
      Rev: src/nettle/pkcs1-rsa-sha1.c:1.2
      Rev: src/nettle/pkcs1.c:1.2
      Rev: src/nettle/realloc.c:1.3
      Rev: src/nettle/rsa-compat.c:1.8
      Rev: src/nettle/rsa-decrypt.c:1.4
      Rev: src/nettle/rsa-encrypt.c:1.5
      Rev: src/nettle/rsa-keygen.c:1.5
      Rev: src/nettle/rsa-md5-sign.c:1.2
      Rev: src/nettle/rsa-md5-verify.c:1.2
      Rev: src/nettle/rsa-sha1-sign.c:1.2
      Rev: src/nettle/rsa-sha1-verify.c:1.2
      Rev: src/nettle/rsa-sign.c:1.3
      Rev: src/nettle/rsa-verify.c:1.2
      Rev: src/nettle/rsa.c:1.12
      Rev: src/nettle/rsa2openpgp.c:1.2
      Rev: src/nettle/rsa2sexp.c:1.7
      Rev: src/nettle/serpent-meta.c:1.2
      Rev: src/nettle/serpent.c:1.4
      Rev: src/nettle/sexp-format.c:1.9
      Rev: src/nettle/sexp-transport-format.c:1.2
      Rev: src/nettle/sexp-transport.c:1.4
      Rev: src/nettle/sexp.c:1.14
      Rev: src/nettle/sexp2bignum.c:1.5
      Rev: src/nettle/sexp2dsa.c:1.4
      Rev: src/nettle/sexp2rsa.c:1.11
      Rev: src/nettle/sha1-meta.c:1.2
      Rev: src/nettle/sha1.c:1.8
      Rev: src/nettle/sha256-meta.c:1.2
      Rev: src/nettle/sha256.c:1.3
      Rev: src/nettle/tools/input.c:1.2
      Rev: src/nettle/tools/misc.c:1.2
      Rev: src/nettle/tools/output.c:1.3
      Rev: src/nettle/tools/parse.c:1.2
      Rev: src/nettle/tools/sexp-conv.c:1.14
      Rev: src/nettle/twofish-meta.c:1.2
      Rev: src/nettle/twofish.c:1.6
      Rev: src/nettle/yarrow256.c:1.17
      Rev: src/nettle/yarrow_key_event.c:1.4
    sql_util.pmod 5.83 KiB
    /*
     * $Id: sql_util.pmod,v 1.23 2008/06/30 12:09:15 srb Exp $
     *
     * Some SQL utility functions.
     * They are kept here to avoid circular references.
     *
     * Henrik Grubbström 1999-07-01
     */
    
    #pike __REAL_VERSION__
    
    //! Some SQL utility functions
    
    //! Quote a string so that it can safely be put in a query.
    //!
    //! @param s
    //!   String to quote.
    string quote(string s)
    {
      return replace(s, "\'", "\'\'");
    }
    
    //! Throw an error in case an unimplemented function is called.
    void fallback()
    {
      error( "Function not supported in this database." );
    }
    
    //! Build a raw SQL query, given the cooked query and the variable bindings
    //! It's meant to be used as an emulation engine for those drivers not
    //! providing such a behaviour directly (i.e. Oracle).
    //! The raw query can contain some variables (identified by prefixing
    //! a colon to a name or a number (i.e. ":var" or  ":2"). They will be
    //! replaced by the corresponding value in the mapping.
    //!
    //! @param query
    //!   The query.
    //!
    //! @param bindings
    //!   Optional mapping containing the variable bindings. Make sure that
    //!   no confusion is possible in the query. If necessary, change the
    //!   variables' names.
    string emulate_bindings(string query, mapping(string|int:mixed)|void bindings,
                            void|object driver)
    {
      array(string)k, v;
      if (!bindings)
        return query;
      function my_quote=(driver&&driver->quote?driver->quote:quote);
      v=map(values(bindings),
    	lambda(mixed m) {
    	  if(zero_type(m))
    	    return "NULL";
    	  if(multisetp(m)) m = indices(m)[0];
    	  return "'"+(intp(m)?(string)m:my_quote((string)m))+"'";
    	});
      // Throws if mapping key is empty string.
      k=map(indices(bindings),lambda(string s){
    			    return ( (stringp(s)&&s[0]==':') ?
    				     s : ":"+s);
    			  });
      return replace(query,k,v);
    }
    
    //! Result object wrapper performing utf8 decoding of all fields.
    class UnicodeWrapper (
    		      // The wrapped result object.
    		      protected object master_result
    		      )
    {
      //! Returns the number of rows in the result.
      int num_rows()
      {
        return master_result->num_rows();
      }
    
      //! Returns the number of fields in the result.
      int num_fields()
      {
        return master_result->num_fields();
      }
    
      //! Returns @expr{1@} if there are no more rows in the result.
      int(0..1) eof()
      {
        return master_result->eof();
      }
    
      //! Cached @[fetch_fields()] result.
      protected array(int|mapping(string:mixed)) field_info;
    
      //! Returns Information about the fields in the result.
      //!
      //! The following fields are converted from UTF8 if present:
      //! @mapping
      //!   @member string "name"
      //!     The name of the field. Always present.
      //!   @member string "table"
      //!     The table the field is from. Not present from all databases.
      //!   @member string "default"
      //!     The default value for the column. Not available from all databases.
      //! @endmapping
      array(int|mapping(string:mixed)) fetch_fields()
      {
        if (!field_info) {
          field_info = master_result->fetch_fields();
          foreach(field_info, int|mapping(string:mixed) field) {
    	if (mappingp(field)) {
    	  field->name = utf8_to_string(field->name);
    	  if (field->table) {
    	    field->table = utf8_to_string(field->table);
    	  }
    	  if (field->default) {
    	    field->default = utf8_to_string(field->default);
    	  }
    	}
          }
        }
        return field_info;
      }
    
      //! Skip ahead the specified number of rows.
      void seek(int rows)
      {
        master_result->seek(rows);
      }
    
      //! Fetch the next row from the result.
      //!
      //! All strings in the result are decoded from UTF8.
      int|array(string) fetch_row()
      {
        int|array(string) row = master_result->fetch_row();
        if (!arrayp(row)) return row;
        array(int|mapping(string:mixed)) field_info = fetch_fields();
        foreach(row; int i; string|int val) {
          if (stringp(val)) {
    	row[i] = utf8_to_string(val);
          }
        }
        return row;
      }
    }
    
    #if constant (Mysql.mysql.HAVE_MYSQL_FIELD_CHARSETNR)
    
    class MySQLUnicodeWrapper
    //! Result wrapper for MySQL that performs UTF-8 decoding of all
    //! nonbinary fields. Useful if the result charset of the connection
    //! has been set to UTF-8.
    //!
    //! @note
    //! There's normally no need to use this class directly. It's used
    //! automatically when @[Mysql.set_unicode_decode_mode] is activated.
    {
      inherit UnicodeWrapper;
    
      int|array(string) fetch_row()
      {
        int|array(string) row = master_result->fetch_row();
        if (!arrayp(row)) return row;
        array(int|mapping(string:mixed)) field_info = fetch_fields();
        foreach(row; int i; string|int val) {
          if (stringp(val) && field_info[i]->charsetnr != 63) {
    	row[i] = utf8_to_string(val);
          }
        }
        return row;
      }
    }
    
    #else
    
    class MySQLBrokenUnicodeWrapper
    // This one is used to get a buggy unicode support when compiled with
    // an old MySQL client lib that doesn't have the charsetnr property in
    // the field info. It looks at the binary flag instead, which is set
    // for binary fields but might also be set for text fields (e.g. with
    // a definition like "VARCHAR(255) BINARY").
    //
    // I.e. the effect of using this one is that text fields with the
    // binary flag won't be correctly decoded in unicode decode mode.
    //
    // This has to be enabled either by passing "broken-unicode" as
    // charset to Sql.mysql.create or Sql.mysql.set_charset, by calling
    // Sql.mysql.set_unicode_decode_mode(-1), or by defining the
    // environment variable PIKE_BROKEN_MYSQL_UNICODE_MODE. That will
    // cause this buggy variant to be used if and only if the MySQL client
    // lib doesn't support the charsetnr property.
    {
      inherit UnicodeWrapper;
    
      int|array(string) fetch_row()
      {
        int|array(string) row = master_result->fetch_row();
        if (!arrayp(row)) return row;
        array(int|mapping(string:mixed)) field_info = fetch_fields();
        foreach(row; int i; string|int val) {
          if (stringp(val) && field_info[i]->flags &&
    	  !field_info[i]->flags->binary) {
    	row[i] = utf8_to_string(val);
          }
        }
        return row;
      }
    }
    
    #endif