[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen stable-4.5] ocaml/xenctrl: Make failwith_xc() thread safe
commit 032673c8836e28d9e291e0d02235001c41aedaab Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Wed Jan 28 17:55:32 2015 +0000 Commit: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CommitDate: Wed May 27 17:04:03 2015 +0100 ocaml/xenctrl: Make failwith_xc() thread safe The static error_str[] buffer is not thread-safe, and 1024 bytes is unreasonably large. Reduce to 256 bytes (which is still much larger than any current use), and move it to being a stack variable. Also, propagate the Noreturn attribute from caml_raise_with_string(). Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CC: Dave Scott <Dave.Scott@xxxxxxxxxxxxx> CC: Ian Campbell <Ian.Campbell@xxxxxxxxxx> CC: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> CC: Wei Liu <wei.liu2@xxxxxxxxxx> Acked-by: David Scott <dave.scott@xxxxxxxxxx> (cherry picked from commit c8945d51613450c19e0898b1b3056c90f4929179) --- tools/ocaml/libs/xc/xenctrl_stubs.c | 15 ++++++++------- 1 files changed, 8 insertions(+), 7 deletions(-) diff --git a/tools/ocaml/libs/xc/xenctrl_stubs.c b/tools/ocaml/libs/xc/xenctrl_stubs.c index 92d064f..6a95528 100644 --- a/tools/ocaml/libs/xc/xenctrl_stubs.c +++ b/tools/ocaml/libs/xc/xenctrl_stubs.c @@ -51,21 +51,22 @@ i1 = (uint32_t) Int64_val(Field(input, 0)); \ i2 = ((Field(input, 1) == Val_none) ? 0xffffffff : (uint32_t) Int64_val(Field(Field(input, 1), 0))); -#define ERROR_STRLEN 1024 -void failwith_xc(xc_interface *xch) +static void Noreturn failwith_xc(xc_interface *xch) { - static char error_str[ERROR_STRLEN]; + char error_str[256]; if (xch) { const xc_error *error = xc_get_last_error(xch); if (error->code == XC_ERROR_NONE) - snprintf(error_str, ERROR_STRLEN, "%d: %s", errno, strerror(errno)); + snprintf(error_str, sizeof(error_str), + "%d: %s", errno, strerror(errno)); else - snprintf(error_str, ERROR_STRLEN, "%d: %s: %s", - error->code, + snprintf(error_str, sizeof(error_str), + "%d: %s: %s", error->code, xc_error_code_to_desc(error->code), error->message); } else { - snprintf(error_str, ERROR_STRLEN, "Unable to open XC interface"); + snprintf(error_str, sizeof(error_str), + "Unable to open XC interface"); } caml_raise_with_string(*caml_named_value("xc.error"), error_str); } -- generated by git-patchbot for /home/xen/git/xen.git#stable-4.5 _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |