From f8158ba72bd76fd9d7a00ac976ec6e2b02332329 Mon Sep 17 00:00:00 2001 From: dylanhitt Date: Thu, 3 Oct 2024 11:34:02 -0400 Subject: [PATCH] fix: handle GError a bit early in some cases --- frida/device.go | 6 ++++-- frida/service.go | 6 ++++-- frida/session.go | 18 ++++++++++++------ 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/frida/device.go b/frida/device.go index 0a88294..3891992 100644 --- a/frida/device.go +++ b/frida/device.go @@ -173,8 +173,10 @@ func (d *Device) params(opts options) (map[string]any, error) { var err *C.GError ht := C.frida_device_query_system_parameters_sync(d.device, opts.cancellable, &err) - - return gHashTableToMap(ht), handleGError(err) + if err != nil { + return nil, handleGError(err) + } + return gHashTableToMap(ht), nil } // FrontmostApplication will return the frontmost application or the application in focus diff --git a/frida/service.go b/frida/service.go index d7589da..6d19ca1 100644 --- a/frida/service.go +++ b/frida/service.go @@ -31,8 +31,10 @@ func (s *Service) Request(req any) (any, error) { var err *C.GError resp := C.frida_service_request_sync(s.service, variant, nil, &err) - - return gVariantToGo(resp), handleGError(err) + if err != nil { + return nil, handleGError(err) + } + return gVariantToGo(resp), nil } func (s *Service) Activate() error { diff --git a/frida/session.go b/frida/session.go index 654a0b3..49c5895 100644 --- a/frida/session.go +++ b/frida/session.go @@ -121,9 +121,12 @@ func (s *Session) CompileScript(script string, opts *ScriptOptions) ([]byte, err scriptC, opts.opts, nil, - &err) - - return getGBytes(bts), handleGError(err) + &err, + ) + if err != nil { + return nil, handleGError(err) + } + return getGBytes(bts), nil } // SnapshotScript creates snapshot from the script. @@ -137,9 +140,12 @@ func (s *Session) SnapshotScript(embedScript string, snapshotOpts *SnapshotOptio embedScriptC, snapshotOpts.opts, nil, - &err) - - return getGBytes(ret), handleGError(err) + &err, + ) + if err != nil { + return nil, handleGError(err) + } + return getGBytes(ret), nil } // SetupPeerConnection sets up peer (p2p) connection with peer options provided.