1
1

util/hostfile: fix a double free error

As reported at https://stackoverflow.com/questions/52707242/mpirun-segmentation-fault-whenever-i-use-a-hostfile
mpirun crashes when the hostfile contains a "user@host" line.
The root cause is username was not strdup'ed and free'd twice by opal_argv_free() and free()

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>

(cherry picked from commit open-mpi/ompi@5803385d44)
Этот коммит содержится в:
Gilles Gouaillardet 2018-10-09 11:09:17 +09:00
родитель 212419290e
Коммит 2e2366d193

Просмотреть файл

@ -13,7 +13,7 @@
* reserved. * reserved.
* Copyright (c) 2011 Cisco Systems, Inc. All rights reserved. * Copyright (c) 2011 Cisco Systems, Inc. All rights reserved.
* Copyright (c) 2013-2017 Intel, Inc. All rights reserved. * Copyright (c) 2013-2017 Intel, Inc. All rights reserved.
* Copyright (c) 2015-2017 Research Organization for Information Science * Copyright (c) 2015-2018 Research Organization for Information Science
* and Technology (RIST). All rights reserved. * and Technology (RIST). All rights reserved.
* Copyright (c) 2016 IBM Corporation. All rights reserved. * Copyright (c) 2016 IBM Corporation. All rights reserved.
* $COPYRIGHT$ * $COPYRIGHT$
@ -159,7 +159,7 @@ static int hostfile_parse_line(int token, opal_list_t* updates,
if (1 == cnt) { if (1 == cnt) {
node_name = strdup(argv[0]); node_name = strdup(argv[0]);
} else if (2 == cnt) { } else if (2 == cnt) {
username = argv[0]; username = strdup(argv[0]);
node_name = strdup(argv[1]); node_name = strdup(argv[1]);
} else { } else {
opal_output(0, "WARNING: Unhandled user@host-combination\n"); /* XXX */ opal_output(0, "WARNING: Unhandled user@host-combination\n"); /* XXX */
@ -274,7 +274,7 @@ static int hostfile_parse_line(int token, opal_list_t* updates,
if (1 == cnt) { if (1 == cnt) {
node_name = strdup(argv[0]); node_name = strdup(argv[0]);
} else if (2 == cnt) { } else if (2 == cnt) {
username = argv[0]; username = strdup(argv[0]);
node_name = strdup(argv[1]); node_name = strdup(argv[1]);
} else { } else {
opal_output(0, "WARNING: Unhandled user@host-combination\n"); /* XXX */ opal_output(0, "WARNING: Unhandled user@host-combination\n"); /* XXX */