diff --git a/libcli/smb/smb2_create_blob.c b/libcli/smb/smb2_create_blob.c index 57c7a9d1150..ecd61e0c9b2 100644 --- a/libcli/smb/smb2_create_blob.c +++ b/libcli/smb/smb2_create_blob.c @@ -225,3 +225,18 @@ struct smb2_create_blob *smb2_create_blob_find(const struct smb2_create_blobs *b return NULL; } + +void smb2_create_blob_remove(struct smb2_create_blobs *b, const char *tag) +{ + struct smb2_create_blob *blob = smb2_create_blob_find(b, tag); + + if (blob == NULL) { + return; + } + + TALLOC_FREE(blob->tag); + data_blob_free(&blob->data); + + *blob = b->blobs[b->num_blobs-1]; + b->num_blobs -= 1; +} diff --git a/libcli/smb/smb2_create_blob.h b/libcli/smb/smb2_create_blob.h index 000fd7469fa..f41e77edc3d 100644 --- a/libcli/smb/smb2_create_blob.h +++ b/libcli/smb/smb2_create_blob.h @@ -71,4 +71,6 @@ NTSTATUS smb2_create_blob_add(TALLOC_CTX *mem_ctx, struct smb2_create_blobs *b, struct smb2_create_blob *smb2_create_blob_find(const struct smb2_create_blobs *b, const char *tag); +void smb2_create_blob_remove(struct smb2_create_blobs *b, const char *tag); + #endif /* _LIBCLI_SMB_SMB2_CREATE_BLOB_H_ */