Skip to content

Commit b531284

Browse files
committed
go sec
1 parent 00b9389 commit b531284

8 files changed

Lines changed: 24 additions & 24 deletions

File tree

‎cmd/main.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func runApp() error {
4343
logger.Info().Msg("Solis Monitor starting...")
4444

4545
// Create data directory if it doesn't exist
46-
if err := os.MkdirAll("./data", 0755); err != nil && !os.IsExist(err) {
46+
if err := os.MkdirAll("./data", 0750); err != nil && !os.IsExist(err) {
4747
return fmt.Errorf("failed to create data directory: %v", err)
4848
}
4949

‎internal/database/backup.go‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func createSQLiteBackup(sourcePath, destPath string) error {
117117
// Ensure parent directory exists for destination
118118
destDir := filepath.Dir(destPath)
119119
if destDir != "" && destDir != "." {
120-
if err := os.MkdirAll(destDir, 0755); err != nil {
120+
if err := os.MkdirAll(destDir, 0750); err != nil {
121121
return fmt.Errorf("failed to create destination directory: %w", err)
122122
}
123123
}
@@ -176,7 +176,7 @@ func restoreSQLiteBackup(sourcePath, destPath string) error {
176176
// Ensure parent directory exists for destination
177177
destDir := filepath.Dir(destPath)
178178
if destDir != "" && destDir != "." {
179-
if err := os.MkdirAll(destDir, 0755); err != nil {
179+
if err := os.MkdirAll(destDir, 0750); err != nil {
180180
return fmt.Errorf("failed to create destination directory: %w", err)
181181
}
182182
}
@@ -239,7 +239,7 @@ func restoreSQLiteBackup(sourcePath, destPath string) error {
239239
// copyFile copies a file from src to dst using simple file copy.
240240
// This is kept as a fallback method if SQLite native backup fails.
241241
func copyFile(src, dst string) error {
242-
source, err := os.Open(src)
242+
source, err := os.Open(src) // #nosec G304
243243
if err != nil {
244244
return fmt.Errorf("failed to open source file: %w", err)
245245
}
@@ -252,7 +252,7 @@ func copyFile(src, dst string) error {
252252
}
253253

254254
// Create destination file
255-
destination, err := os.Create(dst)
255+
destination, err := os.Create(dst) // #nosec G304
256256
if err != nil {
257257
return fmt.Errorf("failed to create destination file: %w", err)
258258
}
@@ -286,13 +286,13 @@ func CreateBackup(dbPath string, config *BackupConfig) (string, error) {
286286

287287
// Ensure directory exists
288288
dir := filepath.Dir(dbPath)
289-
if err := os.MkdirAll(dir, 0755); err != nil {
289+
if err := os.MkdirAll(dir, 0750); err != nil {
290290
return "", fmt.Errorf("failed to create directory: %w", err)
291291
}
292292

293293
// Ensure backups subdirectory exists
294294
backupsDir := filepath.Join(dir, "backups")
295-
if err := os.MkdirAll(backupsDir, 0755); err != nil {
295+
if err := os.MkdirAll(backupsDir, 0750); err != nil {
296296
return "", fmt.Errorf("failed to create backups directory: %w", err)
297297
}
298298

@@ -334,7 +334,7 @@ func RestoreBackup(backupPath string, targetPath string) error {
334334

335335
// Ensure target directory exists
336336
targetDir := filepath.Dir(targetPath)
337-
if err := os.MkdirAll(targetDir, 0755); err != nil {
337+
if err := os.MkdirAll(targetDir, 0750); err != nil {
338338
return fmt.Errorf("failed to create target directory: %w", err)
339339
}
340340

‎internal/database/manager.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -370,7 +370,7 @@ func VerifyDatabasePath(dbPath string) error {
370370
return nil
371371
}
372372

373-
if err := os.MkdirAll(dir, 0755); err != nil {
373+
if err := os.MkdirAll(dir, 0750); err != nil {
374374
return fmt.Errorf("failed to create database directory: %w", err)
375375
}
376376

‎internal/database/migration.go‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,21 +72,21 @@ func (e *MigrationExecutor) ApplyMigration(db *sql.DB, migration Migration) erro
7272

7373
// Apply the migration
7474
if err := migration.Up(tx); err != nil {
75-
tx.Rollback()
75+
_ = tx.Rollback() // #nosec G104
7676
return fmt.Errorf("migration %d failed: %w", version, err)
7777
}
7878

7979
// Record successful migration in schema_version table
8080
// First ensure schema_version table exists
8181
if _, err := tx.Exec(SchemaVersionTableSQL); err != nil {
82-
tx.Rollback()
82+
_ = tx.Rollback() // #nosec G104
8383
return fmt.Errorf("failed to ensure schema_version table exists: %w", err)
8484
}
8585

8686
// Insert or update version record
8787
insertSQL := `INSERT OR REPLACE INTO schema_version (version, description, applied_at, success) VALUES (?, ?, CURRENT_TIMESTAMP, 1)`
8888
if _, err := tx.Exec(insertSQL, version, description); err != nil {
89-
tx.Rollback()
89+
_ = tx.Rollback() // #nosec G104
9090
return fmt.Errorf("failed to record migration: %w", err)
9191
}
9292

@@ -211,7 +211,7 @@ func (e *MigrationExecutor) RollbackMigration(db *sql.DB, version int) error {
211211
}
212212

213213
if err := migration.Down(tx); err != nil {
214-
tx.Rollback()
214+
_ = tx.Rollback() // #nosec G104
215215
if err == ErrNotImplemented {
216216
return fmt.Errorf("migration %d does not support rollback", version)
217217
}
@@ -221,7 +221,7 @@ func (e *MigrationExecutor) RollbackMigration(db *sql.DB, version int) error {
221221
// Mark as unsuccessful in schema_version table (within the same transaction)
222222
updateSQL := "UPDATE schema_version SET success = 0 WHERE version = ?"
223223
if _, err := tx.Exec(updateSQL, version); err != nil {
224-
tx.Rollback()
224+
_ = tx.Rollback() // #nosec G104
225225
return fmt.Errorf("failed to mark migration as unsuccessful: %w", err)
226226
}
227227

‎internal/poller/poller.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ func (p *Poller) run() {
196196

197197
// For RTU, add random jitter to avoid collision with other devices on the bus
198198
if p.modbusClient != nil && p.modbusClient.Config().Type == "rtu" && p.config.JitterMax > 0 {
199-
jitter := time.Duration(rand.Int63n(int64(p.config.JitterMax)))
199+
jitter := time.Duration(rand.Int63n(int64(p.config.JitterMax))) // #nosec G404
200200
logger.Debug().Msgf("Adding %s jitter before poll to avoid RTU bus collision", jitter)
201201
select {
202202
case <-p.ctx.Done():

‎internal/solis/decoder.go‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,15 @@ func decodeRaw(dataType DataType, raw []byte) float64 {
122122
case Uint16:
123123
return float64(binary.BigEndian.Uint16(raw))
124124
case Int16:
125-
return float64(int16(binary.BigEndian.Uint16(raw)))
125+
return float64(int16(binary.BigEndian.Uint16(raw))) // #nosec G115
126126
case Uint32:
127127
if len(raw) >= 4 {
128128
return float64(binary.BigEndian.Uint32(raw))
129129
}
130130
return 0
131131
case Int32:
132132
if len(raw) >= 4 {
133-
return float64(int32(binary.BigEndian.Uint32(raw)))
133+
return float64(int32(binary.BigEndian.Uint32(raw))) // #nosec G115
134134
}
135135
return 0
136136
case Float32:

‎internal/storage/storage.go‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func New(cfg *config.StorageSettings) (*Storage, error) {
5959
// Create parent directories if they don't exist
6060
dir := filepath.Dir(cfg.Path)
6161
if dir != "" && dir != "." {
62-
if err := os.MkdirAll(dir, 0755); err != nil {
62+
if err := os.MkdirAll(dir, 0750); err != nil {
6363
logger.Error().Msgf("Failed to create storage directory: %v", err)
6464
return nil, fmt.Errorf("failed to create directory: %w", err)
6565
}

‎internal/websocket/client.go‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,13 @@ func (c *Client) Send(message []byte) bool {
4848
func (c *Client) readPump() {
4949
defer func() {
5050
c.hub.unregister <- c
51-
c.conn.Close()
51+
_ = c.conn.Close() // #nosec G104
5252
}()
5353

5454
c.conn.SetReadLimit(maxMessageSize)
55-
c.conn.SetReadDeadline(time.Now().Add(pongWait))
55+
_ = c.conn.SetReadDeadline(time.Now().Add(pongWait)) // #nosec G104
5656
c.conn.SetPongHandler(func(string) error {
57-
c.conn.SetReadDeadline(time.Now().Add(pongWait))
57+
_ = c.conn.SetReadDeadline(time.Now().Add(pongWait)) // #nosec G104
5858
return nil
5959
})
6060

@@ -96,13 +96,13 @@ func (c *Client) writePump() {
9696
ticker.Stop()
9797
// Graceful close: wait for write to complete or timeout
9898
time.Sleep(closeGracePeriod)
99-
c.conn.Close()
99+
_ = c.conn.Close() // #nosec G104
100100
}()
101101

102102
for {
103103
select {
104104
case message := <-c.send:
105-
c.conn.SetWriteDeadline(time.Now().Add(writeWait))
105+
_ = c.conn.SetWriteDeadline(time.Now().Add(writeWait))
106106
w, err := c.conn.NextWriter(websocket.TextMessage)
107107
if err != nil {
108108
logger.Error().Msgf("Failed to get writer: %v", err)
@@ -120,7 +120,7 @@ func (c *Client) writePump() {
120120
c.hub.UpdateLastActivity(c)
121121

122122
case <-ticker.C:
123-
c.conn.SetWriteDeadline(time.Now().Add(writeWait))
123+
_ = c.conn.SetWriteDeadline(time.Now().Add(writeWait))
124124
if err := c.conn.WriteMessage(websocket.PingMessage, nil); err != nil {
125125
logger.Debug().Msgf("Failed to write ping: %v", err)
126126
return

0 commit comments

Comments
 (0)