[Libguestfs] [PATCH 5/13] hivex: Move header checksum code into a function.

Jim Meyering jim at meyering.net
Thu Jan 28 17:35:29 UTC 2010


Richard W.M. Jones wrote:
> Subject: [PATCH 05/13] hivex: Move header checksum code into a function.
>
> This function can be reused later.
...
> +static uint32_t
> +header_checksum (hive_h *h)

This parameter can/should be "const".
Is there some reason it's not?

> +{
> +  uint32_t *daddr = (uint32_t *) h->addr;
> +  size_t i;
> +  uint32_t sum = 0;
> +
> +  for (i = 0; i < 0x1fc / 4; ++i) {
> +    sum ^= le32toh (*daddr);
> +    daddr++;
> +  }
> +
> +  return sum;
> +}
> +
>  hive_h *
>  hivex_open (const char *filename, int flags)
>  {
> @@ -340,14 +355,7 @@ hivex_open (const char *filename, int flags)
>      goto error;
>
>    /* Header checksum. */
> -  uint32_t *daddr = (uint32_t *) h->addr;
> -  size_t i;
> -  uint32_t sum = 0;
> -  for (i = 0; i < 0x1fc / 4; ++i) {
> -    sum ^= le32toh (*daddr);
> -    daddr++;
> -  }
> -
> +  uint32_t sum = header_checksum (h);
>    if (sum != le32toh (h->hdr->csum)) {
>      fprintf (stderr, "hivex: %s: bad checksum in hive header\n", filename);
>      errno = EINVAL;




More information about the Libguestfs mailing list