| Line | Source Code | Coverage |
|---|
| 1 | | - |
| 2 | | - |
| 3 | | - |
| 4 | | - |
| 5 | static const unsigned char *body(struct md4_context *ctx, const unsigned char *data, size_t size) | - |
| 6 | { | - |
| 7 | const unsigned char *ptr; | - |
| 8 | quint32 a, b, c, d; | - |
| 9 | quint32 saved_a, saved_b, saved_c, saved_d; | - |
| 10 | | - |
| 11 | ptr = data; | - |
| 12 | | - |
| 13 | a = ctx->a; | - |
| 14 | b = ctx->b; | - |
| 15 | c = ctx->c; | - |
| 16 | d = ctx->d; | - |
| 17 | | - |
| 18 | do { | - |
| 19 | saved_a = a; | - |
| 20 | saved_b = b; | - |
| 21 | saved_c = c; | - |
| 22 | saved_d = d; | - |
| 23 | | - |
| 24 | | - |
| 25 | (a) += (((d)) ^ (((b)) & (((c)) ^ ((d))))) + ((*(const quint32 *)&ptr[(0) * 4])); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 26 | (d) += (((c)) ^ (((a)) & (((b)) ^ ((c))))) + ((*(const quint32 *)&ptr[(1) * 4])); (d) = ((d) << (7)) | ((d) >> (32 - (7))); | - |
| 27 | (c) += (((b)) ^ (((d)) & (((a)) ^ ((b))))) + ((*(const quint32 *)&ptr[(2) * 4])); (c) = ((c) << (11)) | ((c) >> (32 - (11))); | - |
| 28 | (b) += (((a)) ^ (((c)) & (((d)) ^ ((a))))) + ((*(const quint32 *)&ptr[(3) * 4])); (b) = ((b) << (19)) | ((b) >> (32 - (19))); | - |
| 29 | | - |
| 30 | (a) += (((d)) ^ (((b)) & (((c)) ^ ((d))))) + ((*(const quint32 *)&ptr[(4) * 4])); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 31 | (d) += (((c)) ^ (((a)) & (((b)) ^ ((c))))) + ((*(const quint32 *)&ptr[(5) * 4])); (d) = ((d) << (7)) | ((d) >> (32 - (7))); | - |
| 32 | (c) += (((b)) ^ (((d)) & (((a)) ^ ((b))))) + ((*(const quint32 *)&ptr[(6) * 4])); (c) = ((c) << (11)) | ((c) >> (32 - (11))); | - |
| 33 | (b) += (((a)) ^ (((c)) & (((d)) ^ ((a))))) + ((*(const quint32 *)&ptr[(7) * 4])); (b) = ((b) << (19)) | ((b) >> (32 - (19))); | - |
| 34 | | - |
| 35 | (a) += (((d)) ^ (((b)) & (((c)) ^ ((d))))) + ((*(const quint32 *)&ptr[(8) * 4])); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 36 | (d) += (((c)) ^ (((a)) & (((b)) ^ ((c))))) + ((*(const quint32 *)&ptr[(9) * 4])); (d) = ((d) << (7)) | ((d) >> (32 - (7))); | - |
| 37 | (c) += (((b)) ^ (((d)) & (((a)) ^ ((b))))) + ((*(const quint32 *)&ptr[(10) * 4])); (c) = ((c) << (11)) | ((c) >> (32 - (11))); | - |
| 38 | (b) += (((a)) ^ (((c)) & (((d)) ^ ((a))))) + ((*(const quint32 *)&ptr[(11) * 4])); (b) = ((b) << (19)) | ((b) >> (32 - (19))); | - |
| 39 | | - |
| 40 | (a) += (((d)) ^ (((b)) & (((c)) ^ ((d))))) + ((*(const quint32 *)&ptr[(12) * 4])); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 41 | (d) += (((c)) ^ (((a)) & (((b)) ^ ((c))))) + ((*(const quint32 *)&ptr[(13) * 4])); (d) = ((d) << (7)) | ((d) >> (32 - (7))); | - |
| 42 | (c) += (((b)) ^ (((d)) & (((a)) ^ ((b))))) + ((*(const quint32 *)&ptr[(14) * 4])); (c) = ((c) << (11)) | ((c) >> (32 - (11))); | - |
| 43 | (b) += (((a)) ^ (((c)) & (((d)) ^ ((a))))) + ((*(const quint32 *)&ptr[(15) * 4])); (b) = ((b) << (19)) | ((b) >> (32 - (19))); | - |
| 44 | | - |
| 45 | (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + ((*(const quint32 *)&ptr[(0) * 4]) + 0x5A827999); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 46 | (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + ((*(const quint32 *)&ptr[(4) * 4]) + 0x5A827999); (d) = ((d) << (5)) | ((d) >> (32 - (5))); | - |
| 47 | (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + ((*(const quint32 *)&ptr[(8) * 4]) + 0x5A827999); (c) = ((c) << (9)) | ((c) >> (32 - (9))); | - |
| 48 | (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + ((*(const quint32 *)&ptr[(12) * 4]) + 0x5A827999); (b) = ((b) << (13)) | ((b) >> (32 - (13))); | - |
| 49 | | - |
| 50 | (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + ((*(const quint32 *)&ptr[(1) * 4]) + 0x5A827999); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 51 | (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + ((*(const quint32 *)&ptr[(5) * 4]) + 0x5A827999); (d) = ((d) << (5)) | ((d) >> (32 - (5))); | - |
| 52 | (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + ((*(const quint32 *)&ptr[(9) * 4]) + 0x5A827999); (c) = ((c) << (9)) | ((c) >> (32 - (9))); | - |
| 53 | (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + ((*(const quint32 *)&ptr[(13) * 4]) + 0x5A827999); (b) = ((b) << (13)) | ((b) >> (32 - (13))); | - |
| 54 | | - |
| 55 | (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + ((*(const quint32 *)&ptr[(2) * 4]) + 0x5A827999); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 56 | (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + ((*(const quint32 *)&ptr[(6) * 4]) + 0x5A827999); (d) = ((d) << (5)) | ((d) >> (32 - (5))); | - |
| 57 | (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + ((*(const quint32 *)&ptr[(10) * 4]) + 0x5A827999); (c) = ((c) << (9)) | ((c) >> (32 - (9))); | - |
| 58 | (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + ((*(const quint32 *)&ptr[(14) * 4]) + 0x5A827999); (b) = ((b) << (13)) | ((b) >> (32 - (13))); | - |
| 59 | | - |
| 60 | (a) += ((((b)) & ((c))) | (((b)) & ((d))) | (((c)) & ((d)))) + ((*(const quint32 *)&ptr[(3) * 4]) + 0x5A827999); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 61 | (d) += ((((a)) & ((b))) | (((a)) & ((c))) | (((b)) & ((c)))) + ((*(const quint32 *)&ptr[(7) * 4]) + 0x5A827999); (d) = ((d) << (5)) | ((d) >> (32 - (5))); | - |
| 62 | (c) += ((((d)) & ((a))) | (((d)) & ((b))) | (((a)) & ((b)))) + ((*(const quint32 *)&ptr[(11) * 4]) + 0x5A827999); (c) = ((c) << (9)) | ((c) >> (32 - (9))); | - |
| 63 | (b) += ((((c)) & ((d))) | (((c)) & ((a))) | (((d)) & ((a)))) + ((*(const quint32 *)&ptr[(15) * 4]) + 0x5A827999); (b) = ((b) << (13)) | ((b) >> (32 - (13))); | - |
| 64 | | - |
| 65 | (a) += (((b)) ^ ((c)) ^ ((d))) + ((*(const quint32 *)&ptr[(0) * 4]) + 0x6ED9EBA1); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 66 | (d) += (((a)) ^ ((b)) ^ ((c))) + ((*(const quint32 *)&ptr[(8) * 4]) + 0x6ED9EBA1); (d) = ((d) << (9)) | ((d) >> (32 - (9))); | - |
| 67 | (c) += (((d)) ^ ((a)) ^ ((b))) + ((*(const quint32 *)&ptr[(4) * 4]) + 0x6ED9EBA1); (c) = ((c) << (11)) | ((c) >> (32 - (11))); | - |
| 68 | (b) += (((c)) ^ ((d)) ^ ((a))) + ((*(const quint32 *)&ptr[(12) * 4]) + 0x6ED9EBA1); (b) = ((b) << (15)) | ((b) >> (32 - (15))); | - |
| 69 | | - |
| 70 | (a) += (((b)) ^ ((c)) ^ ((d))) + ((*(const quint32 *)&ptr[(2) * 4]) + 0x6ED9EBA1); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 71 | (d) += (((a)) ^ ((b)) ^ ((c))) + ((*(const quint32 *)&ptr[(10) * 4]) + 0x6ED9EBA1); (d) = ((d) << (9)) | ((d) >> (32 - (9))); | - |
| 72 | (c) += (((d)) ^ ((a)) ^ ((b))) + ((*(const quint32 *)&ptr[(6) * 4]) + 0x6ED9EBA1); (c) = ((c) << (11)) | ((c) >> (32 - (11))); | - |
| 73 | (b) += (((c)) ^ ((d)) ^ ((a))) + ((*(const quint32 *)&ptr[(14) * 4]) + 0x6ED9EBA1); (b) = ((b) << (15)) | ((b) >> (32 - (15))); | - |
| 74 | | - |
| 75 | (a) += (((b)) ^ ((c)) ^ ((d))) + ((*(const quint32 *)&ptr[(1) * 4]) + 0x6ED9EBA1); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 76 | (d) += (((a)) ^ ((b)) ^ ((c))) + ((*(const quint32 *)&ptr[(9) * 4]) + 0x6ED9EBA1); (d) = ((d) << (9)) | ((d) >> (32 - (9))); | - |
| 77 | (c) += (((d)) ^ ((a)) ^ ((b))) + ((*(const quint32 *)&ptr[(5) * 4]) + 0x6ED9EBA1); (c) = ((c) << (11)) | ((c) >> (32 - (11))); | - |
| 78 | (b) += (((c)) ^ ((d)) ^ ((a))) + ((*(const quint32 *)&ptr[(13) * 4]) + 0x6ED9EBA1); (b) = ((b) << (15)) | ((b) >> (32 - (15))); | - |
| 79 | | - |
| 80 | (a) += (((b)) ^ ((c)) ^ ((d))) + ((*(const quint32 *)&ptr[(3) * 4]) + 0x6ED9EBA1); (a) = ((a) << (3)) | ((a) >> (32 - (3))); | - |
| 81 | (d) += (((a)) ^ ((b)) ^ ((c))) + ((*(const quint32 *)&ptr[(11) * 4]) + 0x6ED9EBA1); (d) = ((d) << (9)) | ((d) >> (32 - (9))); | - |
| 82 | (c) += (((d)) ^ ((a)) ^ ((b))) + ((*(const quint32 *)&ptr[(7) * 4]) + 0x6ED9EBA1); (c) = ((c) << (11)) | ((c) >> (32 - (11))); | - |
| 83 | (b) += (((c)) ^ ((d)) ^ ((a))) + ((*(const quint32 *)&ptr[(15) * 4]) + 0x6ED9EBA1); (b) = ((b) << (15)) | ((b) >> (32 - (15))); | - |
| 84 | | - |
| 85 | a += saved_a; | - |
| 86 | b += saved_b; | - |
| 87 | c += saved_c; | - |
| 88 | d += saved_d; | - |
| 89 | | - |
| 90 | ptr += 64; | - |
| 91 | } while (size -= 64); executed: }Execution Count:4 partially evaluated: size -= 64| no Evaluation Count:0 | yes Evaluation Count:4 |
| 0-4 |
| 92 | | - |
| 93 | ctx->a = a; | - |
| 94 | ctx->b = b; | - |
| 95 | ctx->c = c; | - |
| 96 | ctx->d = d; | - |
| 97 | | - |
| 98 | return ptr; executed: return ptr;Execution Count:4 | 4 |
| 99 | } | - |
| 100 | | - |
| 101 | static void md4_init(struct md4_context *ctx) | - |
| 102 | { | - |
| 103 | ctx->a = 0x67452301; | - |
| 104 | ctx->b = 0xefcdab89; | - |
| 105 | ctx->c = 0x98badcfe; | - |
| 106 | ctx->d = 0x10325476; | - |
| 107 | | - |
| 108 | ctx->lo = 0; | - |
| 109 | ctx->hi = 0; | - |
| 110 | } executed: }Execution Count:4 | 4 |
| 111 | | - |
| 112 | static void md4_update(struct md4_context *ctx, const unsigned char *data, size_t size) | - |
| 113 | { | - |
| 114 | | - |
| 115 | quint32 saved_lo; | - |
| 116 | unsigned long used, free; | - |
| 117 | | - |
| 118 | saved_lo = ctx->lo; | - |
| 119 | if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo) partially evaluated: (ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo| no Evaluation Count:0 | yes Evaluation Count:4 |
| 0-4 |
| 120 | ctx->hi++; never executed: ctx->hi++; | 0 |
| 121 | ctx->hi += size >> 29; | - |
| 122 | | - |
| 123 | used = saved_lo & 0x3f; | - |
| 124 | | - |
| 125 | if (used) { evaluated: used| yes Evaluation Count:1 | yes Evaluation Count:3 |
| 1-3 |
| 126 | free = 64 - used; | - |
| 127 | | - |
| 128 | if (size < free) { partially evaluated: size < free| yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
| 129 | memcpy(&ctx->buffer[used], data, size); | - |
| 130 | return; executed: return;Execution Count:1 | 1 |
| 131 | } | - |
| 132 | | - |
| 133 | memcpy(&ctx->buffer[used], data, free); | - |
| 134 | data = (const unsigned char *) data + free; | - |
| 135 | size -= free; | - |
| 136 | body(ctx, ctx->buffer, 64); | - |
| 137 | } | 0 |
| 138 | | - |
| 139 | if (size >= 64) { partially evaluated: size >= 64| no Evaluation Count:0 | yes Evaluation Count:3 |
| 0-3 |
| 140 | data = body(ctx, data, size & ~(unsigned long)0x3f); | - |
| 141 | size &= 0x3f; | - |
| 142 | } | 0 |
| 143 | | - |
| 144 | memcpy(ctx->buffer, data, size); | - |
| 145 | } executed: }Execution Count:3 | 3 |
| 146 | | - |
| 147 | static void md4_final(struct md4_context *ctx, unsigned char result[(128/8)]) | - |
| 148 | { | - |
| 149 | | - |
| 150 | unsigned long used, free; | - |
| 151 | | - |
| 152 | used = ctx->lo & 0x3f; | - |
| 153 | | - |
| 154 | ctx->buffer[used++] = 0x80; | - |
| 155 | | - |
| 156 | free = 64 - used; | - |
| 157 | | - |
| 158 | if (free < 8) { partially evaluated: free < 8| no Evaluation Count:0 | yes Evaluation Count:4 |
| 0-4 |
| 159 | memset(&ctx->buffer[used], 0, free); | - |
| 160 | body(ctx, ctx->buffer, 64); | - |
| 161 | used = 0; | - |
| 162 | free = 64; | - |
| 163 | } | 0 |
| 164 | | - |
| 165 | memset(&ctx->buffer[used], 0, free - 8); | - |
| 166 | | - |
| 167 | ctx->lo <<= 3; | - |
| 168 | ctx->buffer[56] = ctx->lo; | - |
| 169 | ctx->buffer[57] = ctx->lo >> 8; | - |
| 170 | ctx->buffer[58] = ctx->lo >> 16; | - |
| 171 | ctx->buffer[59] = ctx->lo >> 24; | - |
| 172 | ctx->buffer[60] = ctx->hi; | - |
| 173 | ctx->buffer[61] = ctx->hi >> 8; | - |
| 174 | ctx->buffer[62] = ctx->hi >> 16; | - |
| 175 | ctx->buffer[63] = ctx->hi >> 24; | - |
| 176 | | - |
| 177 | body(ctx, ctx->buffer, 64); | - |
| 178 | | - |
| 179 | result[0] = ctx->a; | - |
| 180 | result[1] = ctx->a >> 8; | - |
| 181 | result[2] = ctx->a >> 16; | - |
| 182 | result[3] = ctx->a >> 24; | - |
| 183 | result[4] = ctx->b; | - |
| 184 | result[5] = ctx->b >> 8; | - |
| 185 | result[6] = ctx->b >> 16; | - |
| 186 | result[7] = ctx->b >> 24; | - |
| 187 | result[8] = ctx->c; | - |
| 188 | result[9] = ctx->c >> 8; | - |
| 189 | result[10] = ctx->c >> 16; | - |
| 190 | result[11] = ctx->c >> 24; | - |
| 191 | result[12] = ctx->d; | - |
| 192 | result[13] = ctx->d >> 8; | - |
| 193 | result[14] = ctx->d >> 16; | - |
| 194 | result[15] = ctx->d >> 24; | - |
| 195 | | - |
| 196 | memset(ctx, 0, sizeof(*ctx)); | - |
| 197 | } executed: }Execution Count:4 | 4 |
| 198 | | - |
| 199 | | - |
| 200 | | - |
| 201 | | - |
| 202 | | - |
| 203 | | - |
| 204 | | - |
| | |