Dmitry Volyntsev
February 05, 2020 10:00AM
details: https://hg.nginx.org/njs/rev/d228145f0178
branches:
changeset: 1318:d228145f0178
user: Dmitry Volyntsev <xeioex@nginx.com>
date: Wed Feb 05 15:54:56 2020 +0300
description:
Fixed njs_key_string_get() usage.

njs_key_string_get() converts Symbol instances to strings,
while Symbols should never be converted to strings implicitly.
The function is expected to be used only while generating Error
messages.

Found by Clang static analyzer.

diffstat:

src/njs_object_prop.c | 10 +++++++---
src/njs_value.c | 2 --
2 files changed, 7 insertions(+), 5 deletions(-)

diffs (47 lines):

diff -r 53cad4cfc9cb -r d228145f0178 src/njs_object_prop.c
--- a/src/njs_object_prop.c Wed Feb 05 15:26:18 2020 +0300
+++ b/src/njs_object_prop.c Wed Feb 05 15:54:56 2020 +0300
@@ -100,6 +100,7 @@ njs_object_property_add(njs_vm_t *vm, nj
njs_bool_t replace)
{
njs_int_t ret;
+ njs_value_t key_value;
njs_object_prop_t *prop;
njs_lvlhsh_query_t lhq;

@@ -108,8 +109,13 @@ njs_object_property_add(njs_vm_t *vm, nj
return NULL;
}

+ ret = njs_value_to_key(vm, &key_value, key);
+ if (njs_slow_path(ret != NJS_OK)) {
+ return NULL;
+ }
+
lhq.proto = &njs_object_hash_proto;
- njs_key_string_get(vm, key, &lhq.key);
+ njs_string_get(&key_value, &lhq.key);
lhq.key_hash = njs_djb_hash(lhq.key.start, lhq.key.length);
lhq.value = prop;
lhq.replace = replace;
@@ -432,8 +438,6 @@ done:

} else {
if (njs_slow_path(pq.lhq.key_hash == NJS_LENGTH_HASH)) {
- njs_key_string_get(vm, &pq.key, &pq.lhq.key);
-
if (njs_strstr_eq(&pq.lhq.key, &length_key)) {
ret = njs_array_length_set(vm, object, prev, &prop->value);
if (ret != NJS_DECLINED) {
diff -r 53cad4cfc9cb -r d228145f0178 src/njs_value.c
--- a/src/njs_value.c Wed Feb 05 15:26:18 2020 +0300
+++ b/src/njs_value.c Wed Feb 05 15:54:56 2020 +0300
@@ -1288,8 +1288,6 @@ slow_path:
switch (prop->type) {
case NJS_PROPERTY:
if (njs_slow_path(pq.lhq.key_hash == NJS_LENGTH_HASH)) {
- njs_key_string_get(vm, &pq.key, &pq.lhq.key);
-
if (njs_strstr_eq(&pq.lhq.key, &length_key)) {
ret = njs_array_length_set(vm, value, prop, setval);
if (ret != NJS_DECLINED) {
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[njs] Fixed njs_key_string_get() usage.

Dmitry Volyntsev 76 February 05, 2020 10:00AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 82
Record Number of Users: 6 on February 13, 2018
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready