src/server/safs/common.c

changeset 551
97039494764b
parent 490
d218607f5a7e
--- a/src/server/safs/common.c	Thu Aug 15 22:42:35 2024 +0200
+++ b/src/server/safs/common.c	Fri Aug 16 16:59:05 2024 +0200
@@ -165,19 +165,9 @@
         case COMMONSAF_ABORT: return COMMONSAF_REQ_ABORTED;
         case COMMONSAF_NOACTION: return COMMONSAF_RET_NOACTION;
         case COMMONSAF_ERROR: {
-            int len = strlen(value);
-            WSBool isnum = TRUE;
-            int i;
-            for(i=0;i<len;i++) {
-                if(!isdigit(value[i])) {
-                    isnum = FALSE;
-                    break;
-                }
-            }
-            
-            int64_t status;
-            int ret = util_strtoint(value, &status);
-            if(status < 100 || ret > 999 || !ret) {
+            char *end;
+            long status = strtol(value, &end, 10);
+            if(status < 100 || status > 999) {
                 log_ereport(
                         LOG_MISCONFIG,
                         "set-variable: error value must contain a 3-digit http status code");
@@ -185,7 +175,14 @@
                 return COMMONSAF_RET_ERROR;
             }
             
-            const char *msg = isnum ? NULL : cx_strtrim(cx_str(value + i)).ptr;
+            const char *msg = NULL;
+            while(isspace(*end)) {
+                end++;
+            }
+            if(*end != '\0') {
+                msg = end;
+            }
+            
             protocol_status(sn, rq, (int)status, msg);
             
             return COMMONSAF_REQ_ABORTED;

mercurial