Compare commits

...

1 Commits

Author SHA1 Message Date
Jan-Otto Kröpke
c6ee794598 service: fixed buffer too low error (#1745)
Signed-off-by: Jan-Otto Kröpke <mail@jkroepke.de>
2024-11-18 17:39:42 +01:00

View File

@@ -440,6 +440,8 @@ func (c *Collector) getServiceConfig(service *mgr.Service) (mgr.Config, error) {
buf, ok := c.serviceConfigPoolBytes.Get().(*[]byte) buf, ok := c.serviceConfigPoolBytes.Get().(*[]byte)
if !ok || len(*buf) == 0 { if !ok || len(*buf) == 0 {
*buf = make([]byte, bytesNeeded) *buf = make([]byte, bytesNeeded)
} else {
bytesNeeded = uint32(cap(*buf))
} }
for { for {
@@ -450,12 +452,12 @@ func (c *Collector) getServiceConfig(service *mgr.Service) (mgr.Config, error) {
break break
} }
if !errors.Is(err, windows.ERROR_INSUFFICIENT_BUFFER) { if !errors.Is(err, windows.ERROR_INSUFFICIENT_BUFFER) && !errors.Is(err, windows.ERROR_MORE_DATA) {
return mgr.Config{}, err return mgr.Config{}, err
} }
if bytesNeeded <= uint32(len(*buf)) { if bytesNeeded <= uint32(len(*buf)) {
return mgr.Config{}, err return mgr.Config{}, fmt.Errorf("win32 reports buffer too small (%d), but buffer is large enough (%d): %w", uint32(cap(*buf)), bytesNeeded, err)
} }
*buf = make([]byte, bytesNeeded) *buf = make([]byte, bytesNeeded)