]> git.kaiwu.me - njs.git/commitdiff
Fixed handling of encode arg in fs.readdir() and fs.realpath().
authorDmitry Volyntsev <xeioex@nginx.com>
Wed, 4 Sep 2024 04:32:33 +0000 (21:32 -0700)
committerDmitry Volyntsev <xeioexception@gmail.com>
Wed, 4 Sep 2024 16:37:40 +0000 (09:37 -0700)
The issue was introduced in 98c6570f3 (0.8.0).

external/njs_fs_module.c

index 5f9a48e2b9a8f9bcce6f330b10e4380aa2dac64e..de378cee11173b2a9d0f77e91bc1cda5710caa80 100644 (file)
@@ -1940,14 +1940,19 @@ njs_fs_readdir(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
 
     encoding = NULL;
 
-    if (!njs_value_is_string(njs_value_arg(&encode))) {
+
+    if (njs_value_is_string(njs_value_arg(&encode))) {
         njs_value_string_get(njs_value_arg(&encode), &s);
 
-        if (!njs_strstr_eq(&s, &string_buffer)) {
-            encoding = njs_buffer_encoding(vm, njs_value_arg(&encode), 1);
-            if (njs_slow_path(encoding == NULL)) {
-                return NJS_ERROR;
-            }
+    } else {
+        s.length = 0;
+        s.start = NULL;
+    }
+
+    if (!njs_strstr_eq(&s, &string_buffer)) {
+        encoding = njs_buffer_encoding(vm, njs_value_arg(&encode), 1);
+        if (njs_slow_path(encoding == NULL)) {
+            return NJS_ERROR;
         }
     }
 
@@ -2080,14 +2085,18 @@ njs_fs_realpath(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs,
 
     encoding = NULL;
 
-    if (!njs_value_is_string(njs_value_arg(&encode))) {
+    if (njs_value_is_string(njs_value_arg(&encode))) {
         njs_value_string_get(njs_value_arg(&encode), &s);
 
-        if (!njs_strstr_eq(&s, &string_buffer)) {
-            encoding = njs_buffer_encoding(vm, njs_value_arg(&encode), 1);
-            if (njs_slow_path(encoding == NULL)) {
-                return NJS_ERROR;
-            }
+    } else {
+        s.length = 0;
+        s.start = NULL;
+    }
+
+    if (!njs_strstr_eq(&s, &string_buffer)) {
+        encoding = njs_buffer_encoding(vm, njs_value_arg(&encode), 1);
+        if (njs_slow_path(encoding == NULL)) {
+            return NJS_ERROR;
         }
     }