From 1c736ff38b9409a4348f8d08a5fb255a787ae6db Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 5 Aug 2015 12:53:03 +0200 Subject: libfdisk: make context->label usage more robust [smatch scan] --- libfdisk/src/ask.c | 4 ++-- libfdisk/src/label.c | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'libfdisk') diff --git a/libfdisk/src/ask.c b/libfdisk/src/ask.c index 7e0c3c218..d81ebd76a 100644 --- a/libfdisk/src/ask.c +++ b/libfdisk/src/ask.c @@ -432,9 +432,9 @@ int fdisk_ask_partnum(struct fdisk_context *cxt, size_t *partnum, int wantnew) DBG(ASK, ul_debug("%s: asking for %s partition number " "(max: %zu, inchar: %s)", - cxt->label->name, + cxt->label ? cxt->label->name : "???", wantnew ? "new" : "used", - cxt->label->nparts_max, + cxt->label ? cxt->label->nparts_max : 0, inchar ? "yes" : "not")); ask = fdisk_new_ask(); diff --git a/libfdisk/src/label.c b/libfdisk/src/label.c index d3009f5cb..30d0e526f 100644 --- a/libfdisk/src/label.c +++ b/libfdisk/src/label.c @@ -416,12 +416,13 @@ int fdisk_create_disklabel(struct fdisk_context *cxt, const char *name) return -ENOSYS; __fdisk_switch_label(cxt, lb); + assert(cxt->label == lb); if (haslabel && !cxt->parent) fdisk_reset_device_properties(cxt); DBG(CXT, ul_debugobj(cxt, "create a new %s label", lb->name)); - return cxt->label->op->create(cxt); + return lb->op->create(cxt); } /** -- cgit v1.2.3-55-g7522