[PATCH 3/6] util: virprocess: Use local maximum error message size

Peter Krempa pkrempa at redhat.com
Tue Mar 2 15:21:05 UTC 2021


Use of VIR_ERROR_MAX_LENGTH is actually misleading to the readers
because it implies that the strings in virError are 1024 bytes at most.

That isn't true at least for the 'message' field as it's constructed
from concatenating the detail string which (was) max 1024 bytes with
the string variant of the error code without limiting to 1024.

Use a local copy for declaring the struct for error transport with a
comment so that's obvious that it's a local decision to use 1k buffers.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/util/virprocess.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/util/virprocess.c b/src/util/virprocess.c
index 69d64e9466..5a4e3c3e43 100644
--- a/src/util/virprocess.c
+++ b/src/util/virprocess.c
@@ -1137,14 +1137,16 @@ virProcessRunInMountNamespace(pid_t pid G_GNUC_UNUSED,


 #ifndef WIN32
+/* We assume that error messages will fit into 1024 chars */
+# define VIR_PROCESS_ERROR_MAX_LENGTH 1024
 typedef struct {
     int code;
     int domain;
-    char message[VIR_ERROR_MAX_LENGTH];
+    char message[VIR_PROCESS_ERROR_MAX_LENGTH];
     virErrorLevel level;
-    char str1[VIR_ERROR_MAX_LENGTH];
-    char str2[VIR_ERROR_MAX_LENGTH];
-    char str3[VIR_ERROR_MAX_LENGTH];
+    char str1[VIR_PROCESS_ERROR_MAX_LENGTH];
+    char str2[VIR_PROCESS_ERROR_MAX_LENGTH];
+    char str3[VIR_PROCESS_ERROR_MAX_LENGTH];
     int int1;
     int int2;
 } errorData;
-- 
2.29.2




More information about the libvir-list mailing list