diff --git a/changelog/unreleased/fix-stat.md b/changelog/unreleased/fix-stat.md new file mode 100644 index 0000000000..c1897b5ce7 --- /dev/null +++ b/changelog/unreleased/fix-stat.md @@ -0,0 +1,3 @@ +Bugfix: Fix nil pointer exception in stat + +https://github.com/cs3org/reva/pull/2078 diff --git a/internal/grpc/services/gateway/storageprovider.go b/internal/grpc/services/gateway/storageprovider.go index fdc5b5858d..84d24a3844 100644 --- a/internal/grpc/services/gateway/storageprovider.go +++ b/internal/grpc/services/gateway/storageprovider.go @@ -1318,7 +1318,7 @@ func (s *svc) statAcrossProviders(ctx context.Context, req *provider.StatRequest for i, p := range providers { wg.Add(1) - go s.statOnProvider(ctx, req, infoFromProviders[i], p, &errors[i], &wg) + go s.statOnProvider(ctx, req, &infoFromProviders[i], p, &errors[i], &wg) } wg.Wait() @@ -1348,7 +1348,7 @@ func (s *svc) statAcrossProviders(ctx context.Context, req *provider.StatRequest }, nil } -func (s *svc) statOnProvider(ctx context.Context, req *provider.StatRequest, res *provider.ResourceInfo, p *registry.ProviderInfo, e *error, wg *sync.WaitGroup) { +func (s *svc) statOnProvider(ctx context.Context, req *provider.StatRequest, res **provider.ResourceInfo, p *registry.ProviderInfo, e *error, wg *sync.WaitGroup) { defer wg.Done() c, err := s.getStorageProviderClient(ctx, p) if err != nil { @@ -1370,10 +1370,7 @@ func (s *svc) statOnProvider(ctx context.Context, req *provider.StatRequest, res *e = errors.Wrap(err, fmt.Sprintf("gateway: error calling Stat %s on %+v", req.Ref, p)) return } - if res == nil { - res = &provider.ResourceInfo{} - } - *res = *r.Info + *res = r.Info } func (s *svc) Stat(ctx context.Context, req *provider.StatRequest) (*provider.StatResponse, error) {