Print this page
6717509 Need to use bswap/bswapq for byte swap of 64-bit integer on x32/x64 (fix lint)

Split Close
Expand all
Collapse all
          --- old/usr/src/common/crypto/blowfish/blowfish_impl.c
          +++ new/usr/src/common/crypto/blowfish/blowfish_impl.c
↓ open down ↓ 391 lines elided ↑ open up ↑
 392  392                  b32 = (uint32_t *)block;
 393  393                  left = b32[0];
 394  394                  right = b32[1];
 395  395          } else
 396  396  #endif
 397  397          {
 398  398          /*
 399  399           * Read input block and place in left/right in big-endian order.
 400  400           */
 401  401  #ifdef UNALIGNED_POINTERS_PERMITTED
 402      -        left = htonl(*(uint32_t *)&block[0]);
 403      -        right = htonl(*(uint32_t *)&block[4]);
      402 +        left = htonl(*(uint32_t *)(void *)&block[0]);
      403 +        right = htonl(*(uint32_t *)(void *)&block[4]);
 404  404  #else
 405  405          left = ((uint32_t)block[0] << 24)
 406  406              | ((uint32_t)block[1] << 16)
 407  407              | ((uint32_t)block[2] << 8)
 408  408              | (uint32_t)block[3];
 409  409          right = ((uint32_t)block[4] << 24)
 410  410              | ((uint32_t)block[5] << 16)
 411  411              | ((uint32_t)block[6] << 8)
 412  412              | (uint32_t)block[7];
 413  413  #endif  /* UNALIGNED_POINTERS_PERMITTED */
↓ open down ↓ 26 lines elided ↑ open up ↑
 440  440          if (IS_P2ALIGNED(out_block, sizeof (uint32_t))) {
 441  441                  /* LINTED:  pointer alignment */
 442  442                  b32 = (uint32_t *)out_block;
 443  443                  b32[0] = left;
 444  444                  b32[1] = right;
 445  445          } else
 446  446  #endif
 447  447          {
 448  448                  /* Put the block back into the user's block with final swap */
 449  449  #ifdef UNALIGNED_POINTERS_PERMITTED
 450      -                *(uint32_t *)&out_block[0] = htonl(left);
 451      -                *(uint32_t *)&out_block[4] = htonl(right);
      450 +                *(uint32_t *)(void *)&out_block[0] = htonl(left);
      451 +                *(uint32_t *)(void *)&out_block[4] = htonl(right);
 452  452  #else
 453  453                  out_block[0] = left >> 24;
 454  454                  out_block[1] = left >> 16;
 455  455                  out_block[2] = left >> 8;
 456  456                  out_block[3] = left;
 457  457                  out_block[4] = right >> 24;
 458  458                  out_block[5] = right >> 16;
 459  459                  out_block[6] = right >> 8;
 460  460                  out_block[7] = right;
 461  461  #endif  /* UNALIGNED_POINTERS_PERMITTED */
↓ open down ↓ 27 lines elided ↑ open up ↑
 489  489                  b32 = (uint32_t *)block;
 490  490                  left = b32[0];
 491  491                  right = b32[1];
 492  492          } else
 493  493  #endif
 494  494          {
 495  495          /*
 496  496           * Read input block and place in left/right in big-endian order.
 497  497           */
 498  498  #ifdef UNALIGNED_POINTERS_PERMITTED
 499      -        left = htonl(*(uint32_t *)&block[0]);
 500      -        right = htonl(*(uint32_t *)&block[4]);
      499 +        left = htonl(*(uint32_t *)(void *)&block[0]);
      500 +        right = htonl(*(uint32_t *)(void *)&block[4]);
 501  501  #else
 502  502          left = ((uint32_t)block[0] << 24)
 503  503              | ((uint32_t)block[1] << 16)
 504  504              | ((uint32_t)block[2] << 8)
 505  505              | (uint32_t)block[3];
 506  506          right = ((uint32_t)block[4] << 24)
 507  507              | ((uint32_t)block[5] << 16)
 508  508              | ((uint32_t)block[6] << 8)
 509  509              | (uint32_t)block[7];
 510  510  #endif  /* UNALIGNED_POINTERS_PERMITTED */
↓ open down ↓ 26 lines elided ↑ open up ↑
 537  537          if (IS_P2ALIGNED(out_block, sizeof (uint32_t))) {
 538  538                  /* LINTED:  pointer alignment */
 539  539                  b32 = (uint32_t *)out_block;
 540  540                  b32[0] = left;
 541  541                  b32[1] = right;
 542  542          } else
 543  543  #endif
 544  544          {
 545  545          /* Put the block back into the user's block with final swap */
 546  546  #ifdef UNALIGNED_POINTERS_PERMITTED
 547      -                *(uint32_t *)&out_block[0] = htonl(left);
 548      -                *(uint32_t *)&out_block[4] = htonl(right);
      547 +                *(uint32_t *)(void *)&out_block[0] = htonl(left);
      548 +                *(uint32_t *)(void *)&out_block[4] = htonl(right);
 549  549  #else
 550  550                  out_block[0] = left >> 24;
 551  551                  out_block[1] = left >> 16;
 552  552                  out_block[2] = left >> 8;
 553  553                  out_block[3] = left;
 554  554                  out_block[4] = right >> 24;
 555  555                  out_block[5] = right >> 16;
 556  556                  out_block[6] = right >> 8;
 557  557                  out_block[7] = right;
 558  558  #endif  /* UNALIGNED_POINTERS_PERMITTED */
↓ open down ↓ 228 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX