mirror of
https://github.com/moonD4rk/HackBrowserData.git
synced 2026-05-19 18:58:03 +02:00
fix: Improve error handling if walk browser profile dir
- Implement error handling for path permission errors in `chromiumWalkFunc` - Refactor `firefoxWalkFunc` to handle permission errors and log warnings - Add import statement for `log/slog` in `firefox/firefox.go`
This commit is contained in:
@@ -3,6 +3,7 @@ package chromium
|
||||
import (
|
||||
"io/fs"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"slices"
|
||||
"strings"
|
||||
@@ -136,6 +137,13 @@ func (c *Chromium) userDataTypePaths(profilePath string, items []types.DataType)
|
||||
// chromiumWalkFunc return a filepath.WalkFunc to find item's path
|
||||
func chromiumWalkFunc(items []types.DataType, multiItemPaths map[string]map[types.DataType]string) filepath.WalkFunc {
|
||||
return func(path string, info fs.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
if os.IsPermission(err) {
|
||||
slog.Warn("skipping walk chromium path permission error", "path", path, "err", err)
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
for _, v := range items {
|
||||
if info.Name() != v.Filename() {
|
||||
continue
|
||||
@@ -156,7 +164,7 @@ func chromiumWalkFunc(items []types.DataType, multiItemPaths map[string]map[type
|
||||
multiItemPaths[profileFolder] = map[types.DataType]string{v: path}
|
||||
}
|
||||
}
|
||||
return err
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
@@ -59,6 +60,13 @@ func (f *Firefox) copyItemToLocal() error {
|
||||
|
||||
func firefoxWalkFunc(items []types.DataType, multiItemPaths map[string]map[types.DataType]string) fs.WalkDirFunc {
|
||||
return func(path string, info fs.DirEntry, err error) error {
|
||||
if err != nil {
|
||||
if os.IsPermission(err) {
|
||||
slog.Warn("skipping walk firefox path permission error", "path", path, "err", err)
|
||||
return nil
|
||||
}
|
||||
return err
|
||||
}
|
||||
for _, v := range items {
|
||||
if info.Name() == v.Filename() {
|
||||
parentBaseDir := fileutil.ParentBaseDir(path)
|
||||
@@ -70,7 +78,7 @@ func firefoxWalkFunc(items []types.DataType, multiItemPaths map[string]map[types
|
||||
}
|
||||
}
|
||||
|
||||
return err
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user