|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/4] libxc: drop size parameter from xc_flask_context_to_sid()
On Tue, Jun 16, 2026 at 11:01:41AM +0200, Jan Beulich wrote:
> Nul-terminated strings are passed in all cases, so the strlen() can very
> well be invoked by the function itself. In preparation for a hypervisor
> change also include the nul terminator in the size calculation.
>
> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
for the python part:
Acked-by: Marek Marczykowski-Górecki <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
> ---
> Ideally libxl_flask_context_to_sid() would follow suit, but aiui doing so
> would break its (stable) ABI.
>
> Of course the casts in xc_flask_access() are suspicious.
>
> --- a/tools/helpers/init-xenstore-domain.c
> +++ b/tools/helpers/init-xenstore-domain.c
> @@ -108,7 +108,7 @@ static int build(xc_interface *xch)
>
> if ( flask )
> {
> - rv = xc_flask_context_to_sid(xch, flask, strlen(flask),
> &config.ssidref);
> + rv = xc_flask_context_to_sid(xch, flask, &config.ssidref);
> if ( rv )
> {
> fprintf(stderr, "xc_flask_context_to_sid failed\n");
> --- a/tools/include/xenctrl.h
> +++ b/tools/include/xenctrl.h
> @@ -2372,7 +2372,7 @@ long xc_sharing_used_frames(xc_interface
> /*** End sharing interface ***/
>
> int xc_flask_load(xc_interface *xc_handle, char *buf, uint32_t size);
> -int xc_flask_context_to_sid(xc_interface *xc_handle, char *buf, uint32_t
> size, uint32_t *sid);
> +int xc_flask_context_to_sid(xc_interface *xc_handle, char *buf, uint32_t
> *sid);
> int xc_flask_sid_to_context(xc_interface *xc_handle, int sid, char *buf,
> uint32_t size);
> int xc_flask_getenforce(xc_interface *xc_handle);
> int xc_flask_setenforce(xc_interface *xc_handle, int mode);
> --- a/tools/libs/ctrl/xc_flask.c
> +++ b/tools/libs/ctrl/xc_flask.c
> @@ -83,10 +83,11 @@ int xc_flask_load(xc_interface *xch, cha
> return err;
> }
>
> -int xc_flask_context_to_sid(xc_interface *xch, char *buf, uint32_t size,
> uint32_t *sid)
> +int xc_flask_context_to_sid(xc_interface *xch, char *buf, uint32_t *sid)
> {
> int err;
> struct xen_flask_op op = {};
> + size_t size = strlen(buf) + 1;
> DECLARE_HYPERCALL_BOUNCE(buf, size, XC_HYPERCALL_BUFFER_BOUNCE_IN);
>
> if ( xc_hypercall_bounce_pre(xch, buf) )
> @@ -247,7 +248,7 @@ static int xc_flask_add(xc_interface *xc
> int err;
> struct xen_flask_op op = {};
>
> - err = xc_flask_context_to_sid(xch, scontext, strlen(scontext), &sid);
> + err = xc_flask_context_to_sid(xch, scontext, &sid);
> if ( err )
> return err;
>
> @@ -323,10 +324,10 @@ int xc_flask_access(xc_interface *xch, c
> struct xen_flask_op op = {};
> int err;
>
> - err = xc_flask_context_to_sid(xch, (char*)scon, strlen(scon),
> &op.u.access.ssid);
> + err = xc_flask_context_to_sid(xch, (char*)scon, &op.u.access.ssid);
> if ( err )
> return err;
> - err = xc_flask_context_to_sid(xch, (char*)tcon, strlen(tcon),
> &op.u.access.tsid);
> + err = xc_flask_context_to_sid(xch, (char*)tcon, &op.u.access.tsid);
> if ( err )
> return err;
>
> --- a/tools/libs/light/libxl_flask.c
> +++ b/tools/libs/light/libxl_flask.c
> @@ -21,7 +21,8 @@ int libxl_flask_context_to_sid(libxl_ctx
> {
> int rc;
>
> - rc = xc_flask_context_to_sid(ctx->xch, buf, len, ssidref);
> + assert(len == strlen(buf));
> + rc = xc_flask_context_to_sid(ctx->xch, buf, ssidref);
>
> return rc;
> }
> --- a/tools/python/xen/lowlevel/xc/xc.c
> +++ b/tools/python/xen/lowlevel/xc/xc.c
> @@ -1754,7 +1754,7 @@ static PyObject *pyflask_context_to_sid(
> return PyErr_SetFromErrno(xc_error_obj);
> }
>
> - ret = xc_flask_context_to_sid(xc_handle, ctx, strlen(ctx), &sid);
> + ret = xc_flask_context_to_sid(xc_handle, ctx, &sid);
>
> xc_interface_close(xc_handle);
>
>
--
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
Attachment:
signature.asc
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |