summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Brooks <mark.brooks@joyent.com>2019-11-05 11:30:38 +0000
committerJohn Levon <john.levon@joyent.com>2019-11-07 11:30:31 +0000
commit4c05824a49c53dcd087c0babf8780068997f0735 (patch)
treed3c3d82aa197d2d461c43fa6b8213a9dc6203af4
parent1c085a54d061bc17f8b209d1ea6161fcdf66d971 (diff)
downloadillumos-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.c21
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;