BETA Shoulder is in beta — Findings may sometimes be wrong. Your feedback shapes what we fix next. Share feedback
↩️

Unchecked Return Value

🛡️ 2 rules detect this

Unchecked Return Value

The product does not check the return value from a method or function, which can prevent it from detecting unexpected states and conditions.

When return values are not checked, the program may continue execution in an error state or with incorrect data, potentially leading to security vulnerabilities.

Prevalence
Medium
2 languages covered
Impact
High
1 high-severity rules
Prevention
Documented
2 fix examples
2 Prevention
2 Prevention

How to fix this vulnerability

Prevention strategies for Unchecked Return Value based on 2 Shoulder detection rules.

Unchecked Error Return Values MEDIUM

Replace blank identifier _ with err and check error return values

+4 -1 go
- data, _ := ioutil.ReadFile(path)
+ data, err := ioutil.ReadFile(path)
+ if err != nil {
+     return fmt.Errorf("failed to read %s: %w", path, err)
+ }
  process(data)
  
Unchecked Return Value from Critical Operations HIGH

Always check return values from critical operations like password comparison and database writes

+4 -2 javascript
- bcrypt.compare(req.body.password, user.passwordHash);
- // Proceeds without checking the result
+ const isValid = await bcrypt.compare(req.body.password, user.passwordHash);
+ if (!isValid) {
+   return res.status(401).json({ error: 'Invalid credentials' });
+ }
  const token = generateToken(user);
  
4 Warning Signs
4 Warning Signs

What to watch for in code reviews

These patterns indicate potential Unchecked Return Value vulnerabilities. Look for these during code reviews and security audits.

🟠
Return value from ... at ... is not checked javascript-unchecked-return-value
🟠
critical operations (file system, database, authentication) whose return values are not checked javascript-unchecked-return-value
🔍

Scan your codebase for Unchecked Return Value

Shoulder CLI finds vulnerable patterns across your entire codebase.