Skip to content

Commit db8342d

Browse files
authored
Merge pull request #374 from padelsbach/wp-exch-pointer-checks
Avoid modifying context in key exchange dup functions
2 parents 9a58f60 + 6ea1b28 commit db8342d

3 files changed

Lines changed: 21 additions & 15 deletions

File tree

src/wp_dh_exch.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,13 @@ static wp_DhCtx* wp_dh_dupctx(wp_DhCtx* src)
132132
dst->key = src->key;
133133
}
134134
/* Copy peer's key by up referencing and copying pointer. */
135-
if (ok && (src->peer != NULL) && (!wp_dh_up_ref(src->peer))) {
136-
ok = 0;
137-
}
138-
else {
139-
dst->peer = src->peer;
135+
if (ok) {
136+
if ((src->peer != NULL) && (!wp_dh_up_ref(src->peer))) {
137+
ok = 0;
138+
}
139+
else {
140+
dst->peer = src->peer;
141+
}
140142
}
141143
/* Copy User Keying Material. */
142144
if (ok && (src->ukm != NULL) && (src->ukmLen > 0)) {

src/wp_ecdh_exch.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -134,11 +134,13 @@ static wp_EcdhCtx* wp_ecdh_dup(wp_EcdhCtx* src)
134134
dst->key = src->key;
135135
}
136136
/* Copy peer's key by up referencing and copying pointer. */
137-
if (ok && (src->peer != NULL) && (!wp_ecc_up_ref(src->peer))) {
138-
ok = 0;
139-
}
140-
else {
141-
dst->peer = src->peer;
137+
if (ok) {
138+
if ((src->peer != NULL) && (!wp_ecc_up_ref(src->peer))) {
139+
ok = 0;
140+
}
141+
else {
142+
dst->peer = src->peer;
143+
}
142144
}
143145
/* Copy User Keying Material. */
144146
if (ok && (src->ukm != NULL) && (src->ukmLen > 0)) {

src/wp_ecx_exch.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,13 @@ static wp_EcxCtx* wp_ecx_dupctx(wp_EcxCtx* src)
108108
else {
109109
dst->key = src->key;
110110
}
111-
if (ok && (src->peer != NULL) && (!wp_ecx_up_ref(src->peer))) {
112-
ok = 0;
113-
}
114-
else {
115-
dst->peer = src->peer;
111+
if (ok) {
112+
if ((src->peer != NULL) && (!wp_ecx_up_ref(src->peer))) {
113+
ok = 0;
114+
}
115+
else {
116+
dst->peer = src->peer;
117+
}
116118
}
117119
if (!ok) {
118120
wp_ecx_free(dst->key);

0 commit comments

Comments
 (0)