From: Sage Weil Date: Sat, 28 Sep 2013 04:03:28 +0000 (-0700) Subject: common/crc32c_intel_baseline: accept null data buffer X-Git-Tag: v0.72-rc1~42^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=36e18ae997700f0b3b06d983d902826f034ac8cd;p=ceph.git common/crc32c_intel_baseline: accept null data buffer Signed-off-by: Sage Weil --- diff --git a/src/common/crc32c_intel_baseline.c b/src/common/crc32c_intel_baseline.c index 3a92c77b63cb..390898171df6 100644 --- a/src/common/crc32c_intel_baseline.c +++ b/src/common/crc32c_intel_baseline.c @@ -115,13 +115,21 @@ uint32_t ceph_crc32c_intel_baseline(uint32_t crc_init2, unsigned char const *buf unsigned int crc; unsigned char* p_buf; - p_buf = (unsigned char*)buffer; - unsigned char const * p_end = buffer + len; + if (buffer) { + p_buf = (unsigned char*)buffer; + unsigned char const * p_end = buffer + len; - crc = crc_init; + crc = crc_init; + + while (p_buf < (unsigned char *) p_end ){ + crc = (crc >> 8) ^ crc32_table_iscsi_base[(crc & 0x000000FF) ^ *p_buf++]; + } + } else { + crc = crc_init; + while (len--) { + crc = (crc >> 8) ^ crc32_table_iscsi_base[(crc & 0x000000FF)]; + } - while(p_buf < (unsigned char *) p_end ){ - crc = (crc >> 8) ^ crc32_table_iscsi_base[(crc & 0x000000FF) ^ *p_buf++] ; } return crc; }