From: Vitaly Lavrov Date: Thu, 27 Feb 2014 09:01:00 +0000 (+0400) Subject: fix realloc() error on reboot container X-Git-Tag: lxc-1.1.0.alpha1~262 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0cf455013da475954207feb1ed0a437f4891be03;p=thirdparty%2Flxc.git fix realloc() error on reboot container The container with "lxc.network.type=phys" halted with error on reboot. Error message: *** glibc detected *** lxc-start: realloc(): invalid pointer: 0x0948eed0 *** We have a sequence: 1) conf->saved_nic = relloc(NULL) on start start.c:container save_phys_nics() 2) free(conf->saved_nics) after stop container conf.c:lxc_rename_phys_nics_on_shutdown() 3) conf->saved_nic = relloc(conf->saved_nics) on restart container start.c:save_phys_nics() -> error relloc() free(conf->saved_nics) in lxc_rename_phys_nics_on_shutdown() unnecessary, it will be called later in lxc_clear_saved_nics(). Signed-off-by: Vitaly Lavrov Acked-by: Stéphane Graber --- diff --git a/src/lxc/conf.c b/src/lxc/conf.c index fc39897fe..b6bc4142b 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -2565,7 +2565,6 @@ void lxc_rename_phys_nics_on_shutdown(struct lxc_conf *conf) free(s->orig_name); } conf->num_savednics = 0; - free(conf->saved_nics); } static char *default_rootfs_mount = LXCROOTFSMOUNT; @@ -4075,11 +4074,10 @@ static void lxc_clear_saved_nics(struct lxc_conf *conf) { int i; - if (!conf->num_savednics) + if (!conf->saved_nics) return; for (i=0; i < conf->num_savednics; i++) free(conf->saved_nics[i].orig_name); - conf->saved_nics = 0; free(conf->saved_nics); }