summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMadelyn Olson <34459052+madolson@users.noreply.github.com>2020-12-01 11:46:45 -0800
committerGitHub <noreply@github.com>2020-12-01 11:46:45 -0800
commit69b7113bb52360f330d184b5b270625d35902ad6 (patch)
tree9e5f00979ca2f9df183f399246b96042711b6842
parent3ba2281f96098691d9d672ce8b484207379b09ee (diff)
downloadredis-69b7113bb52360f330d184b5b270625d35902ad6.tar.gz
Getset fix (#8118)
* Fixed SET GET executing on wrong type Co-authored-by: Madelyn Olson <madelyneolson@gmail.com>
-rw-r--r--src/t_string.c2
-rw-r--r--tests/unit/type/string.tcl8
2 files changed, 9 insertions, 1 deletions
diff --git a/src/t_string.c b/src/t_string.c
index e8b37663d..3ecc473bd 100644
--- a/src/t_string.c
+++ b/src/t_string.c
@@ -90,7 +90,7 @@ void setGenericCommand(client *c, int flags, robj *key, robj *val, robj *expire,
}
if (flags & OBJ_SET_GET) {
- getGenericCommand(c);
+ if (getGenericCommand(c) == C_ERR) return;
}
genericSetKey(c,c->db,key,val,flags & OBJ_SET_KEEPTTL,1);
diff --git a/tests/unit/type/string.tcl b/tests/unit/type/string.tcl
index 5058acec4..16e961623 100644
--- a/tests/unit/type/string.tcl
+++ b/tests/unit/type/string.tcl
@@ -415,6 +415,14 @@ start_server {tags {"string"}} {
list $err1 $err2
} {*syntax err* *syntax err*}
+ test {Extended SET GET with incorrect type should result in wrong type error} {
+ r del foo
+ r rpush foo waffle
+ catch {r set foo bar GET} err1
+ assert_equal "waffle" [r rpop foo]
+ set err1
+ } {*WRONGTYPE*}
+
test {Extended SET EX option} {
r del foo
r set foo bar ex 10