]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Set return type for escape functions to ssize_t
authorNick Porter <nick@portercomputing.co.uk>
Tue, 22 Oct 2024 08:15:08 +0000 (09:15 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Tue, 22 Oct 2024 08:15:08 +0000 (09:15 +0100)
So failures can be reported back

src/lib/json/base.h
src/lib/json/jpath.c
src/lib/server/util.c
src/lib/server/util.h
src/lib/unlang/xlat.h
src/modules/rlm_sql/drivers/rlm_sql_mysql/rlm_sql_mysql.c
src/modules/rlm_sql/drivers/rlm_sql_postgresql/rlm_sql_postgresql.c
src/modules/rlm_sql/rlm_sql.c

index 61fbb5752c1a73c5e6fed653cd781dc0fb97bba6..3c83655354ec790888dffe385d4bf1299887be8a 100644 (file)
@@ -236,7 +236,7 @@ extern conf_parser_t const fr_json_format_config[];
 /* jpath .c */
 typedef struct fr_jpath_node fr_jpath_node_t;
 
-size_t         fr_jpath_escape_func(UNUSED request_t *request, char *out, size_t outlen,
+ssize_t                fr_jpath_escape_func(UNUSED request_t *request, char *out, size_t outlen,
                                     char const *in, UNUSED void *arg);
 
 int            fr_jpath_evaluate_leaf(TALLOC_CTX *ctx, fr_value_box_list_t *out,
index 8dde82c609b3d7be5f23c6f2420a1280d308ec0b..a69f0df3752c77e8952ce2c514a98ecfc5961a4d 100644 (file)
@@ -103,7 +103,7 @@ static char const escape_chars[] = "[],*.:()?";
  * @param arg uctx data, not used.
  * @return the number of chars written to out.
  */
-size_t fr_jpath_escape_func(UNUSED request_t *request, char *out, size_t outlen, char const *in, UNUSED void *arg)
+ssize_t fr_jpath_escape_func(UNUSED request_t *request, char *out, size_t outlen, char const *in, UNUSED void *arg)
 {
        char const *p = in;
        char *q = out, *end = out + outlen;
index 4f483102971d8051e6003893d8ba8c9e915a2fd2..52b111adacb297a27e1dc27dd37770b4c74bedf2 100644 (file)
@@ -93,7 +93,7 @@ void (*reset_signal(int signo, void (*func)(int)))(int)
  * @param in string to escape.
  * @param arg Context arguments (unused, should be NULL).
  */
-size_t rad_filename_make_safe(UNUSED request_t *request, char *out, size_t outlen, char const *in, UNUSED void *arg)
+ssize_t rad_filename_make_safe(UNUSED request_t *request, char *out, size_t outlen, char const *in, UNUSED void *arg)
 {
        char const *q = in;
        char *p = out;
@@ -213,7 +213,7 @@ int rad_filename_box_make_safe(fr_value_box_t *vb, UNUSED void *uxtc)
  * @param in string to escape.
  * @param arg Context arguments (unused, should be NULL).
  */
-size_t rad_filename_escape(UNUSED request_t *request, char *out, size_t outlen, char const *in, UNUSED void *arg)
+ssize_t rad_filename_escape(UNUSED request_t *request, char *out, size_t outlen, char const *in, UNUSED void *arg)
 {
        size_t freespace = outlen;
 
index e37c67bfebc3f67e1ebfc253d23de447762e71d0..7c0485d583037ba0f103059322d4038ee75e96fd 100644 (file)
@@ -34,10 +34,10 @@ extern "C" {
 #include <freeradius-devel/util/talloc.h>
 
 void (*reset_signal(int signo, void (*func)(int)))(int);
-size_t         rad_filename_make_safe(UNUSED request_t *request, char *out, size_t outlen,
+ssize_t                rad_filename_make_safe(UNUSED request_t *request, char *out, size_t outlen,
                                       char const *in, UNUSED void *arg);
 int            rad_filename_box_make_safe(fr_value_box_t *vb, UNUSED void *uxtc);
-size_t         rad_filename_escape(UNUSED request_t *request, char *out, size_t outlen,
+ssize_t                rad_filename_escape(UNUSED request_t *request, char *out, size_t outlen,
                                    char const *in, UNUSED void *arg);
 int            rad_filename_box_escape(fr_value_box_t *vb, UNUSED void *uxtc);
 ssize_t                rad_filename_unescape(char *out, size_t outlen, char const *in, size_t inlen);
index f278032caf63cbe06a875cd9aad312c12d503a2a..273818188c22ecae2a0c0f8a7f706edfda6c1383 100644 (file)
@@ -52,7 +52,7 @@ typedef struct xlat_thread_inst_s xlat_thread_inst_t;
 
 #include <freeradius-devel/server/request.h>
 
-typedef size_t (*xlat_escape_legacy_t)(request_t *request, char *out, size_t outlen, char const *in, void *arg);
+typedef ssize_t (*xlat_escape_legacy_t)(request_t *request, char *out, size_t outlen, char const *in, void *arg);
 
 #include <freeradius-devel/server/cf_util.h>
 #include <freeradius-devel/server/signal.h>
index b00ae393151d2ce61f7b9858b285090ebf6d4aca..55efd057e0628be8906f63edf90df22c14f73651 100644 (file)
@@ -835,7 +835,7 @@ static int sql_affected_rows(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t
        return mysql_affected_rows(conn->sock);
 }
 
-static size_t sql_escape_func(UNUSED request_t *request, char *out, size_t outlen, char const *in, void *arg)
+static ssize_t sql_escape_func(UNUSED request_t *request, char *out, size_t outlen, char const *in, void *arg)
 {
        size_t                  inlen;
        connection_t            *c = talloc_get_type_abort(arg, connection_t);
index b59359faa272d497d3d477027479742ef2a80c76..f6bb2bc55eae297e7d95f7aad8b89118b3918e9b 100644 (file)
@@ -655,7 +655,7 @@ static int sql_affected_rows(fr_sql_query_t *query_ctx, UNUSED rlm_sql_config_t
        return conn->affected_rows;
 }
 
-static size_t sql_escape_func(request_t *request, char *out, size_t outlen, char const *in, void *arg)
+static ssize_t sql_escape_func(request_t *request, char *out, size_t outlen, char const *in, void *arg)
 {
        size_t                  inlen, ret;
        connection_t            *c = talloc_get_type_abort(arg, connection_t);
index af059d0569513df80dfe3481ef415fd2f45528fa..65dbe9f5a38c1a565b382fbc523d93a098788e12 100644 (file)
@@ -328,7 +328,7 @@ static sql_fall_through_t fall_through(map_list_t *maps)
 /*
  *     Yucky prototype.
  */
-static size_t sql_escape_func(request_t *, char *out, size_t outlen, char const *in, void *arg);
+static ssize_t sql_escape_func(request_t *, char *out, size_t outlen, char const *in, void *arg);
 
 /** Escape a tainted VB used as an xlat argument
  *
@@ -338,7 +338,7 @@ static int CC_HINT(nonnull(2,3)) sql_xlat_escape(request_t *request, fr_value_bo
        fr_sbuff_t                      sbuff;
        fr_sbuff_uctx_talloc_t          sbuff_ctx;
 
-       size_t                          len;
+       ssize_t                         len;
        void                            *arg;
        rlm_sql_escape_uctx_t           *ctx = uctx;
        rlm_sql_t const                 *inst = talloc_get_type_abort_const(ctx->sql, rlm_sql_t);
@@ -391,6 +391,7 @@ static int CC_HINT(nonnull(2,3)) sql_xlat_escape(request_t *request, fr_value_bo
        }
 
        len = inst->sql_escape_func(request, fr_sbuff_buff(&sbuff), vb->vb_length * 3 + 1, vb->vb_strvalue, arg);
+       if (len < 0) goto error;
 
        /*
         *      fr_value_box_strdup_shallow resets the dlist entries - take a copy
@@ -863,7 +864,7 @@ static unlang_action_t mod_map_proc(rlm_rcode_t *p_result, void const *mod_inst,
 /** xlat escape function for drivers which do not provide their own
  *
  */
-static size_t sql_escape_func(UNUSED request_t *request, char *out, size_t outlen, char const *in, void *arg)
+static ssize_t sql_escape_func(UNUSED request_t *request, char *out, size_t outlen, char const *in, void *arg)
 {
        rlm_sql_t const         *inst = talloc_get_type_abort_const(arg, rlm_sql_t);
        size_t                  len = 0;