From 6f3e075b3ad1e6cd5b3268fce65c768340b00a5b Mon Sep 17 00:00:00 2001 From: "Andrew J. Schorr" Date: Sat, 25 Nov 2017 13:33:00 -0500 Subject: Fix potential field corruption when $0 is set from the debugger. --- debug.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'debug.c') diff --git a/debug.c b/debug.c index 9a022669..3e76ae61 100644 --- a/debug.c +++ b/debug.c @@ -1299,10 +1299,11 @@ do_set_var(CMDARG *arg, int cmd ATTRIBUTE_UNUSED) arg = arg->next; val = arg->a_node; lhs = get_field(field_num, &assign); - unref(*lhs); - *lhs = dupnode(val); if (assign) + /* call assign to copy fields before unref frees $0 */ assign(); + unref(*lhs); + *lhs = dupnode(val); print_field(field_num); } break; -- cgit v1.2.3