@@ -117,16 +117,27 @@ func (e *exportInfoMap) add(
117
117
topLevelNodeModulesIndex := nodeModulesPathParts .TopLevelNodeModulesIndex
118
118
topLevelPackageNameIndex := nodeModulesPathParts .TopLevelPackageNameIndex
119
119
packageRootIndex := nodeModulesPathParts .PackageRootIndex
120
- packageName = module .UnmangleScopedPackageName (modulespecifiers .GetPackageNameFromTypesPackageName (moduleFile .FileName ()[topLevelPackageNameIndex + 1 : packageRootIndex ]))
121
- if strings .HasPrefix (string (importingFile ), string (moduleFile .Path ())[0 :topLevelNodeModulesIndex ]) {
122
- nodeModulesPath := moduleFile .FileName ()[0 : topLevelPackageNameIndex + 1 ]
123
- if prevDeepestNodeModulesPath , ok := e .packages [packageName ]; ok {
124
- prevDeepestNodeModulesIndex := strings .Index (prevDeepestNodeModulesPath , "/node_modules/" )
125
- if topLevelNodeModulesIndex > prevDeepestNodeModulesIndex {
120
+
121
+ // Bounds check to prevent slice bounds out of range panic
122
+ fileName := moduleFile .FileName ()
123
+ if topLevelPackageNameIndex + 1 >= 0 && packageRootIndex >= 0 && topLevelPackageNameIndex + 1 <= packageRootIndex && packageRootIndex <= len (fileName ) {
124
+ packageName = module .UnmangleScopedPackageName (modulespecifiers .GetPackageNameFromTypesPackageName (fileName [topLevelPackageNameIndex + 1 : packageRootIndex ]))
125
+ }
126
+
127
+ // Bounds check for module path slice
128
+ modulePath := string (moduleFile .Path ())
129
+ if topLevelNodeModulesIndex >= 0 && topLevelNodeModulesIndex <= len (modulePath ) && strings .HasPrefix (string (importingFile ), modulePath [0 :topLevelNodeModulesIndex ]) {
130
+ // Bounds check for node modules path slice
131
+ if topLevelPackageNameIndex + 1 >= 0 && topLevelPackageNameIndex + 1 <= len (fileName ) {
132
+ nodeModulesPath := fileName [0 : topLevelPackageNameIndex + 1 ]
133
+ if prevDeepestNodeModulesPath , ok := e .packages [packageName ]; ok {
134
+ prevDeepestNodeModulesIndex := strings .Index (prevDeepestNodeModulesPath , "/node_modules/" )
135
+ if topLevelNodeModulesIndex > prevDeepestNodeModulesIndex {
136
+ e .packages [packageName ] = nodeModulesPath
137
+ }
138
+ } else {
126
139
e .packages [packageName ] = nodeModulesPath
127
140
}
128
- } else {
129
- e .packages [packageName ] = nodeModulesPath
130
141
}
131
142
}
132
143
}
0 commit comments