Use ntohl instead of doing LE conversion yourself 60/head
authorOndřej Surý <ondrej@sury.org>
Mon, 23 Jan 2017 09:39:48 +0000 (10:39 +0100)
committerOndřej Surý <ondrej@sury.org>
Mon, 23 Jan 2017 10:14:32 +0000 (11:14 +0100)
src/php_http_etag.c

index ceb82e334f74489df046b591fcd1d425dcce5375..1430cfa1c6726dec7b6b2f3264fa4cf0abf0012c 100644 (file)
@@ -57,18 +57,10 @@ char *php_http_etag_finish(php_http_etag_t *e)
        char *etag = NULL;
 
        if (!strcasecmp(e->mode, "crc32b")) {
-               unsigned char buf[4];
-
-               *((uint *) e->ctx) = ~*((uint *) e->ctx);
-#ifdef WORDS_BIGENDIAN
-               etag = php_http_etag_digest((unsigned char *) e->ctx, 4);
-#else
-               buf[0] = ((unsigned char *) e->ctx)[3];
-               buf[1] = ((unsigned char *) e->ctx)[2];
-               buf[2] = ((unsigned char *) e->ctx)[1];
-               buf[3] = ((unsigned char *) e->ctx)[0];
-               etag = php_http_etag_digest(buf, 4);
-#endif
+               uint e_ctx;
+               memcpy(&e_ctx, e->ctx, 4);
+               e_ctx = ntohl(~e_ctx);
+               etag = php_http_etag_digest((unsigned char *) &e_ctx, 4);
        } else if ((!strcasecmp(e->mode, "sha1"))) {
                PHP_SHA1Final(digest, e->ctx);
                etag = php_http_etag_digest(digest, 20);