Skip to content

Commit ca72ab6

Browse files
author
Massimiliano Pippi
committed
check nil pointers
1 parent 96b7093 commit ca72ab6

File tree

3 files changed

+23
-7
lines changed

3 files changed

+23
-7
lines changed

Diff for: arduino/cores/cores.go

+16-7
Original file line numberDiff line numberDiff line change
@@ -182,10 +182,13 @@ func (platform *Platform) latestReleaseVersion() *semver.Version {
182182
// GetAllInstalled returns all installed PlatformRelease
183183
func (platform *Platform) GetAllInstalled() []*PlatformRelease {
184184
res := []*PlatformRelease{}
185-
for _, release := range platform.Releases {
186-
if release.IsInstalled() {
187-
res = append(res, release)
185+
if platform.Releases != nil {
186+
for _, release := range platform.Releases {
187+
if release.IsInstalled() {
188+
res = append(res, release)
189+
}
188190
}
191+
189192
}
190193
return res
191194
}
@@ -225,17 +228,23 @@ func (release *PlatformRelease) RequiresToolRelease(toolRelease *ToolRelease) bo
225228
// RuntimeProperties returns the runtime properties for this PlatformRelease
226229
func (release *PlatformRelease) RuntimeProperties() *properties.Map {
227230
res := properties.NewMap()
228-
res.Set("runtime.platform.path", release.InstallDir.String())
231+
if release.InstallDir != nil {
232+
res.Set("runtime.platform.path", release.InstallDir.String())
233+
}
234+
229235
return res
230236
}
231237

232238
// GetLibrariesDir returns the path to the core libraries or nil if not
233239
// present
234240
func (release *PlatformRelease) GetLibrariesDir() *paths.Path {
235-
libDir := release.InstallDir.Join("libraries")
236-
if libDir.IsDir() {
237-
return libDir
241+
if release.InstallDir != nil {
242+
libDir := release.InstallDir.Join("libraries")
243+
if libDir.IsDir() {
244+
return libDir
245+
}
238246
}
247+
239248
return nil
240249
}
241250

Diff for: arduino/cores/packagemanager/package_manager.go

+4
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,10 @@ func (pm *PackageManager) ResolveFQBN(fqbn *cores.FQBN) (
191191
fmt.Errorf("missing platform %s:%s referenced by board %s", referredPackage, fqbn.PlatformArch, fqbn)
192192
}
193193
buildPlatformRelease = pm.GetInstalledPlatformRelease(buildPlatform)
194+
if buildPlatformRelease == nil {
195+
return targetPackage, platformRelease, board, buildProperties, nil,
196+
fmt.Errorf("missing platform release %s:%s referenced by board %s", referredPackage, fqbn.PlatformArch, fqbn)
197+
}
194198
}
195199

196200
// No errors... phew!

Diff for: arduino/libraries/librariesmanager/install.go

+3
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ func (lm *LibrariesManager) Install(indexLibrary *librariesindex.Release, libPat
7777

7878
// Uninstall removes a Library
7979
func (lm *LibrariesManager) Uninstall(lib *libraries.Library) error {
80+
if lib == nil || lib.InstallDir == nil {
81+
return fmt.Errorf("install directory not set")
82+
}
8083
if err := lib.InstallDir.RemoveAll(); err != nil {
8184
return fmt.Errorf("removing lib directory: %s", err)
8285
}

0 commit comments

Comments
 (0)