Fix panic in metadata content writer on copy error
The `createAndCopy` function is only called when `nw.w` is nil in order to create a new writer and prepare it. The current code is attempting to close `nw.w` when there is a copy error. The correct behavior would be to close the new writer and not touch `nw.w`. Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
		| @@ -558,13 +558,13 @@ func (nw *namespacedWriter) createAndCopy(ctx context.Context, desc ocispec.Desc | |||||||
| 	if desc.Size > 0 { | 	if desc.Size > 0 { | ||||||
| 		ra, err := nw.provider.ReaderAt(ctx, nw.desc) | 		ra, err := nw.provider.ReaderAt(ctx, nw.desc) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|  | 			w.Close() | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
| 		defer ra.Close() | 		defer ra.Close() | ||||||
|  |  | ||||||
| 		if err := content.CopyReaderAt(w, ra, desc.Size); err != nil { | 		if err := content.CopyReaderAt(w, ra, desc.Size); err != nil { | ||||||
| 			nw.w.Close() | 			w.Close() | ||||||
| 			nw.w = nil |  | ||||||
| 			return err | 			return err | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Derek McGowan
					Derek McGowan