diff mbox series

[1/3] tools/golang: When returning pointers, actually allocate structrues

Message ID 20240419105037.700283-1-george.dunlap@cloud.com (mailing list archive)
State Superseded
Headers show
Series [1/3] tools/golang: When returning pointers, actually allocate structrues | expand

Commit Message

George Dunlap April 19, 2024, 10:50 a.m. UTC
In a handful of cases, it was decided to return a pointer to a
structure rather than the plain structure itself, due to the size.
However, in these cases the structure was never allocated, leading to
a nil pointer exception when calling the relevant `fromC` method.

Allocate structures before attempting to fill them in.

Reported-by: Tobias Fitschen <tobias.fitschen@posteo.de>
Signed-off-by: George Dunlap <george.dunlap@cloud.com>
---
This has been compile-tested only; Tobias, I'd appreciate a test if you get a chance.

CC: Nick Rosbrook <rosbrookn@gmail.com>
CC: Anthony PERARD <anthony.perard@citrix.com>
---
 tools/golang/xenlight/xenlight.go | 3 +++
 1 file changed, 3 insertions(+)

Comments

Tobias Fitschen April 19, 2024, 11:31 a.m. UTC | #1
Thank you for the fast response, George. I can confirm that I can call all three functions without errors now and this patch fixes the errors I encountered.

Am 19. April 2024 12:50:35 MESZ schrieb George Dunlap <george.dunlap@cloud.com>:
>In a handful of cases, it was decided to return a pointer to a
>structure rather than the plain structure itself, due to the size.
>However, in these cases the structure was never allocated, leading to
>a nil pointer exception when calling the relevant `fromC` method.
>
>Allocate structures before attempting to fill them in.
>
>Reported-by: Tobias Fitschen <tobias.fitschen@posteo.de>
>Signed-off-by: George Dunlap <george.dunlap@cloud.com>
>---
>This has been compile-tested only; Tobias, I'd appreciate a test if you get a chance.
>
>CC: Nick Rosbrook <rosbrookn@gmail.com>
>CC: Anthony PERARD <anthony.perard@citrix.com>
>---
> tools/golang/xenlight/xenlight.go | 3 +++
> 1 file changed, 3 insertions(+)
>
>diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
>index a45c636952..d793f172e5 100644
>--- a/tools/golang/xenlight/xenlight.go
>+++ b/tools/golang/xenlight/xenlight.go
>@@ -999,6 +999,7 @@ func (ctx *Context) GetPhysinfo() (physinfo *Physinfo, err error) {
> 		err = Error(ret)
> 		return
> 	}
>+	physinfo = &Physinfo{}
> 	err = physinfo.fromC(&cphys)
> 
> 	return
>@@ -1010,6 +1011,7 @@ func (ctx *Context) GetVersionInfo() (info *VersionInfo, err error) {
> 
> 	cinfo = C.libxl_get_version_info(ctx.ctx)
> 
>+	info = &VersionInfo{}
> 	err = info.fromC(cinfo)
> 
> 	return
>@@ -1027,6 +1029,7 @@ func (ctx *Context) DomainInfo(Id Domid) (di *Dominfo, err error) {
> 		return
> 	}
> 
>+	di = &Dominfo{}
> 	err = di.fromC(&cdi)
> 
> 	return
>-- 
>2.25.1
>
diff mbox series

Patch

diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
index a45c636952..d793f172e5 100644
--- a/tools/golang/xenlight/xenlight.go
+++ b/tools/golang/xenlight/xenlight.go
@@ -999,6 +999,7 @@  func (ctx *Context) GetPhysinfo() (physinfo *Physinfo, err error) {
 		err = Error(ret)
 		return
 	}
+	physinfo = &Physinfo{}
 	err = physinfo.fromC(&cphys)
 
 	return
@@ -1010,6 +1011,7 @@  func (ctx *Context) GetVersionInfo() (info *VersionInfo, err error) {
 
 	cinfo = C.libxl_get_version_info(ctx.ctx)
 
+	info = &VersionInfo{}
 	err = info.fromC(cinfo)
 
 	return
@@ -1027,6 +1029,7 @@  func (ctx *Context) DomainInfo(Id Domid) (di *Dominfo, err error) {
 		return
 	}
 
+	di = &Dominfo{}
 	err = di.fromC(&cdi)
 
 	return