[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()


  • To: Jan Beulich <jbeulich@xxxxxxxx>
  • From: Marek Marczykowski <marmarek@xxxxxxxxxxxxxxxxxxxxxx>
  • Date: Tue, 16 Jun 2026 12:24:06 +0200
  • Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=fm1 header.d=invisiblethingslab.com header.i="@invisiblethingslab.com" header.h="Cc:Content-Type:Date:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To"; dkim=pass header.s=fm1 header.d=messagingengine.com header.i="@messagingengine.com" header.h="Cc:Content-Type:Date:Feedback-ID:From:In-Reply-To:Message-ID:MIME-Version:References:Subject:To:X-ME-Proxy:X-ME-Sender"
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, Daniel Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx>
  • Delivery-date: Tue, 16 Jun 2026 10:24:19 +0000
  • Feedback-id: i1568416f:Fastmail
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

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
Description: PGP signature


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.