]> granicus.if.org Git - apache/commitdiff
Merge r1422549, r1422712 from trunk:
authorJim Jagielski <jim@apache.org>
Mon, 28 Jan 2013 13:09:39 +0000 (13:09 +0000)
committerJim Jagielski <jim@apache.org>
Mon, 28 Jan 2013 13:09:39 +0000 (13:09 +0000)
add new ap_bin2hex() utility function

remove unnecessary cast

Submitted by: sf
Reviewed/backported by: jim

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1439390 13f79535-47bb-0310-9956-ffa450edef68

include/ap_mmn.h
include/httpd.h
server/util.c
server/util_md5.c

index b412941a49b40a8356a9973c75e848ab48a53efb..2efda87e94df668c2fb1c21ddd53a2fe9f9e4bbf 100644 (file)
  * 20120211.8 (2.4.3-dev)  Add sticky_separator to proxy_balancer_shared struct.
  * 20120211.9 (2.4.4-dev)  Add fgrab() to ap_slotmem_provider_t.
  * 20120211.10 (2.4.4-dev) Add in bal_persist field to proxy_server_conf
+ * 20120211.11 (2.4.4-dev)  Add ap_bin2hex()
  */
 
 #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */
 #ifndef MODULE_MAGIC_NUMBER_MAJOR
 #define MODULE_MAGIC_NUMBER_MAJOR 20120211
 #endif
-#define MODULE_MAGIC_NUMBER_MINOR 10                   /* 0...n */
+#define MODULE_MAGIC_NUMBER_MINOR 11                   /* 0...n */
 
 /**
  * Determine if the server's current MODULE_MAGIC_NUMBER is at least a
index f18f789d9d725e21339715eb24a59a9196f2b745..70eb06f983577df027d2a0c1b649ae1f99580395 100644 (file)
@@ -2209,6 +2209,14 @@ AP_DECLARE(void) ap_get_sload(ap_sload_t *ld);
  */
 AP_DECLARE(void) ap_get_loadavg(ap_loadavg_t *ld);
 
+/**
+ * Convert binary data into a hex string
+ * @param src pointer to the data
+ * @param srclen length of the data
+ * @param dest pointer to buffer of length (2 * srclen + 1). The resulting
+ *        string will be NUL-terminated.
+ */
+AP_DECLARE(void) ap_bin2hex(const void *src, apr_size_t srclen, char *dest);
 
 #define AP_NORESTART APR_OS_START_USEERR + 1
 
index 36c278409142e1fee5963315f7d0ad4068a4a082..d77719ebda6da27aabca29fd088ad96fc09c3187 100644 (file)
@@ -1958,6 +1958,18 @@ AP_DECLARE(apr_size_t) ap_escape_errorlog_item(char *dest, const char *source,
     return (d - (unsigned char *)dest);
 }
 
+AP_DECLARE(void) ap_bin2hex(const void *src, apr_size_t srclen, char *dest)
+{
+    const unsigned char *in = src;
+    apr_size_t i;
+
+    for (i = 0; i < srclen; i++) {
+        *dest++ = c2x_table[in[i] >> 4];
+        *dest++ = c2x_table[in[i] & 0xf];
+    }
+    *dest = '\0';
+}
+
 AP_DECLARE(int) ap_is_directory(apr_pool_t *p, const char *path)
 {
     apr_finfo_t finfo;
index 83bfa75741110763c68e5b9edc5719fd2c3494ce..148c60ceb43271228139ceb777ce75f6b3ba98c2 100644 (file)
 
 AP_DECLARE(char *) ap_md5_binary(apr_pool_t *p, const unsigned char *buf, int length)
 {
-    const char *hex = "0123456789abcdef";
     apr_md5_ctx_t my_md5;
     unsigned char hash[APR_MD5_DIGESTSIZE];
-    char *r, result[33]; /* (MD5_DIGESTSIZE * 2) + 1 */
-    int i;
+    char result[2 * APR_MD5_DIGESTSIZE + 1];
 
     /*
      * Take the MD5 hash of the string argument.
@@ -69,11 +67,7 @@ AP_DECLARE(char *) ap_md5_binary(apr_pool_t *p, const unsigned char *buf, int le
     apr_md5_update(&my_md5, buf, (unsigned int)length);
     apr_md5_final(hash, &my_md5);
 
-    for (i = 0, r = result; i < APR_MD5_DIGESTSIZE; i++) {
-        *r++ = hex[hash[i] >> 4];
-        *r++ = hex[hash[i] & 0xF];
-    }
-    *r = '\0';
+    ap_bin2hex(hash, APR_MD5_DIGESTSIZE, result);
 
     return apr_pstrndup(p, result, APR_MD5_DIGESTSIZE*2);
 }