diff options
author | Mark Brooks <mark.brooks@joyent.com> | 2019-11-05 11:30:38 +0000 |
---|---|---|
committer | John Levon <john.levon@joyent.com> | 2019-11-07 11:30:31 +0000 |
commit | 4c05824a49c53dcd087c0babf8780068997f0735 (patch) | |
tree | d3c3d82aa197d2d461c43fa6b8213a9dc6203af4 | |
parent | 1c085a54d061bc17f8b209d1ea6161fcdf66d971 (diff) | |
download | illumos-joyent-4c05824a49c53dcd087c0babf8780068997f0735.tar.gz |
11924 infinite loop in mdb ::load
Reviewed by: John Levon <john.levon@joyent.com>
Reviewed by: Toomas Soome <tsoome@me.com>
Approved by: Dan McDonald <danmcd@joyent.com>
-rw-r--r-- | usr/src/cmd/mdb/common/mdb/mdb_module_load.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/usr/src/cmd/mdb/common/mdb/mdb_module_load.c b/usr/src/cmd/mdb/common/mdb/mdb_module_load.c index 811af3dd47..141aa3a5cd 100644 --- a/usr/src/cmd/mdb/common/mdb/mdb_module_load.c +++ b/usr/src/cmd/mdb/common/mdb/mdb_module_load.c @@ -22,7 +22,7 @@ /* * Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. - * Copyright (c) 2012 Joyent, Inc. All rights reserved. + * Copyright 2019 Joyent, Inc. */ #include <sys/param.h> @@ -60,21 +60,22 @@ mdb_module_load(const char *name, int mode) /* * Remove any .so(.[0-9]+)? suffix */ - while ((p = strrchr(buf, '.')) != NULL) { + if ((p = strrchr(buf, '.')) != NULL) { for (q = p + 1; isdigit(*q); q++) ; if (*q == '\0') { - /* found digits to remove */ - *p = '\0'; - continue; - } + if (q > p + 1) { - if (strcmp(p, ".so") == 0) { - *p = '\0'; - break; + /* found digits to remove */ + *p = '\0'; + } + } + if ((p = strrchr(buf, '.')) != NULL) { + if (strcmp(p, ".so") == 0) { + *p = '\0'; + } } - } fullname = name; name = buf; |