Browse Source

ucode: fix EOF detection in the non-blocking read patch

size = 0 means EOF - do not return an empty string in this case
(which implies no data available).

Signed-off-by: Felix Fietkau <[email protected]>
Felix Fietkau 2 months ago
parent
commit
2d067b0dd5

+ 7 - 3
package/utils/ucode/patches/121-fs-add-read_nb-method-for-non-blocking-reads.patch

@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
 
 --- a/lib/fs.c
 +++ b/lib/fs.c
-@@ -674,6 +674,112 @@ uc_fs_read(uc_vm_t *vm, size_t nargs)
+@@ -674,6 +674,116 @@ uc_fs_read(uc_vm_t *vm, size_t nargs)
  }
  
  /**
@@ -65,6 +65,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
 +	FILE **fp = uc_fn_this("fs.file");
 +	char *buf = NULL;
 +	ssize_t n_read;
++	uc_value_t *rv;
 +	size_t limit = 4096;
 +	int fd;
 +
@@ -113,7 +114,10 @@ Signed-off-by: Felix Fietkau <[email protected]>
 +		err_return(errno);
 +	}
 +
-+	uc_value_t *rv = ucv_string_new_length(buf, (size_t)n_read);
++	if (!n_read)
++		return NULL;
++
++	rv = ucv_string_new_length(buf, (size_t)n_read);
 +	free(buf);
 +
 +	return rv;
@@ -123,7 +127,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
   * Writes a chunk of data to the file handle.
   *
   * In case the given data is not a string, it is converted to a string before
-@@ -2910,6 +3016,7 @@ static const uc_function_list_t proc_fns
+@@ -2910,6 +3020,7 @@ static const uc_function_list_t proc_fns
  
  static const uc_function_list_t file_fns[] = {
  	{ "read",		uc_fs_read },

+ 2 - 2
package/utils/ucode/patches/122-fs-add-mkdtemp-method-for-creating-temporary-directo.patch

@@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
 
 --- a/lib/fs.c
 +++ b/lib/fs.c
-@@ -2632,6 +2632,86 @@ uc_fs_mkstemp(uc_vm_t *vm, size_t nargs)
+@@ -2636,6 +2636,86 @@ uc_fs_mkstemp(uc_vm_t *vm, size_t nargs)
  }
  
  /**
@@ -97,7 +97,7 @@ Signed-off-by: Felix Fietkau <[email protected]>
   * Checks the accessibility of a file or directory.
   *
   * The optional modes argument specifies the access modes which should be
-@@ -3065,6 +3145,7 @@ static const uc_function_list_t global_f
+@@ -3069,6 +3149,7 @@ static const uc_function_list_t global_f
  	{ "basename",	uc_fs_basename },
  	{ "lsdir",		uc_fs_lsdir },
  	{ "mkstemp",	uc_fs_mkstemp },