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. Fixes: 453713b1750 ("golang/xenlight: Add host-related functionality") Reported-by: Tobias Fitschen <tobias.fitsc...@posteo.de> Signed-off-by: George Dunlap <george.dun...@cloud.com> Tested-by: Tobias Fitschen <tobias.fitsc...@posteo.de> --- v2: - Added Fixes: tag - Added Tested-by tag NB this is a candidate for backport. CC: Nick Rosbrook <rosbro...@gmail.com> CC: Anthony PERARD <anthony.per...@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