Check for reading beyond the end of the buffer and alignment problems */
| 856 | |
| 857 | /* Check for reading beyond the end of the buffer and alignment problems */ |
| 858 | static void driver3(void) |
| 859 | { |
| 860 | uint8_t buf[MAXLEN+20], *b; |
| 861 | uint32_t len; |
| 862 | uint8_t q[] = "This is the time for all good men to come to the aid of their country..."; |
| 863 | uint32_t h; |
| 864 | uint8_t qq[] = "xThis is the time for all good men to come to the aid of their country..."; |
| 865 | uint32_t i; |
| 866 | uint8_t qqq[] = "xxThis is the time for all good men to come to the aid of their country..."; |
| 867 | uint32_t j; |
| 868 | uint8_t qqqq[] = "xxxThis is the time for all good men to come to the aid of their country..."; |
| 869 | uint32_t ref,x,y; |
| 870 | uint8_t *p; |
| 871 | uint32_t m = 13; |
| 872 | |
| 873 | printf("Endianness. These lines should all be the same (for values filled in):\n"); |
| 874 | printf("%.8x %.8x %.8x\n", |
| 875 | jlu32w(m, (const uint32_t *)q, (sizeof(q)-1)/4), |
| 876 | jlu32w(m, (const uint32_t *)q, (sizeof(q)-5)/4), |
| 877 | jlu32w(m, (const uint32_t *)q, (sizeof(q)-9)/4)); |
| 878 | p = q; |
| 879 | printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n", |
| 880 | jlu32l(m, p, sizeof(q)-1), jlu32l(m, p, sizeof(q)-2), |
| 881 | jlu32l(m, p, sizeof(q)-3), jlu32l(m, p, sizeof(q)-4), |
| 882 | jlu32l(m, p, sizeof(q)-5), jlu32l(m, p, sizeof(q)-6), |
| 883 | jlu32l(m, p, sizeof(q)-7), jlu32l(m, p, sizeof(q)-8), |
| 884 | jlu32l(m, p, sizeof(q)-9), jlu32l(m, p, sizeof(q)-10), |
| 885 | jlu32l(m, p, sizeof(q)-11), jlu32l(m, p, sizeof(q)-12)); |
| 886 | p = &qq[1]; |
| 887 | printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n", |
| 888 | jlu32l(m, p, sizeof(q)-1), jlu32l(m, p, sizeof(q)-2), |
| 889 | jlu32l(m, p, sizeof(q)-3), jlu32l(m, p, sizeof(q)-4), |
| 890 | jlu32l(m, p, sizeof(q)-5), jlu32l(m, p, sizeof(q)-6), |
| 891 | jlu32l(m, p, sizeof(q)-7), jlu32l(m, p, sizeof(q)-8), |
| 892 | jlu32l(m, p, sizeof(q)-9), jlu32l(m, p, sizeof(q)-10), |
| 893 | jlu32l(m, p, sizeof(q)-11), jlu32l(m, p, sizeof(q)-12)); |
| 894 | p = &qqq[2]; |
| 895 | printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n", |
| 896 | jlu32l(m, p, sizeof(q)-1), jlu32l(m, p, sizeof(q)-2), |
| 897 | jlu32l(m, p, sizeof(q)-3), jlu32l(m, p, sizeof(q)-4), |
| 898 | jlu32l(m, p, sizeof(q)-5), jlu32l(m, p, sizeof(q)-6), |
| 899 | jlu32l(m, p, sizeof(q)-7), jlu32l(m, p, sizeof(q)-8), |
| 900 | jlu32l(m, p, sizeof(q)-9), jlu32l(m, p, sizeof(q)-10), |
| 901 | jlu32l(m, p, sizeof(q)-11), jlu32l(m, p, sizeof(q)-12)); |
| 902 | p = &qqqq[3]; |
| 903 | printf("%.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x %.8x\n", |
| 904 | jlu32l(m, p, sizeof(q)-1), jlu32l(m, p, sizeof(q)-2), |
| 905 | jlu32l(m, p, sizeof(q)-3), jlu32l(m, p, sizeof(q)-4), |
| 906 | jlu32l(m, p, sizeof(q)-5), jlu32l(m, p, sizeof(q)-6), |
| 907 | jlu32l(m, p, sizeof(q)-7), jlu32l(m, p, sizeof(q)-8), |
| 908 | jlu32l(m, p, sizeof(q)-9), jlu32l(m, p, sizeof(q)-10), |
| 909 | jlu32l(m, p, sizeof(q)-11), jlu32l(m, p, sizeof(q)-12)); |
| 910 | printf("\n"); |
| 911 | for (h=0, b=buf+1; h<8; ++h, ++b) { |
| 912 | for (i=0; i<MAXLEN; ++i) { |
| 913 | len = i; |
| 914 | for (j=0; j<i; ++j) |
| 915 | *(b+j)=0; |