Unexpected Status Code or Return Value

Draft Base
Structure: Simple
Description

This vulnerability occurs when software fails to properly validate the full range of possible return values from a function or system call. While a returned value might be technically valid for that operation, the application doesn't anticipate or handle it correctly, leading to unexpected behavior.

Extended Description

Developers often write code expecting only a subset of possible return codes—like success or a few known errors—but overlook other legitimate values the system can produce. This creates a gap where an unexpected but valid return, such as a specific error code from a library update or a rare system state, bypasses the application's logic. Without comprehensive checks, the software might misinterpret the result, proceeding as if the operation succeeded when it actually failed, or vice-versa. To prevent this, implement defensive programming by explicitly handling all documented return values, not just the common ones. Treat any unhandled return as a potential failure and design fallback mechanisms or graceful degradation paths. Always consult the official documentation for functions and APIs to understand the complete spectrum of possible outputs, and write validation logic that accounts for both expected and unexpected-but-valid scenarios to maintain system stability.

Common Consequences 1
Scope: IntegrityOther

Impact: Unexpected StateAlter Execution Logic

Observed Examples 8
CVE-2004-1395Certain packets (zero byte and other lengths) cause a recvfrom call to produce an unexpected return code that causes a server's listening loop to exit.
CVE-2002-2124Unchecked return code from recv() leads to infinite loop.
CVE-2005-2553Kernel function does not properly handle when a null is returned by a function call, causing it to call another function that it shouldn't.
CVE-2005-1858Memory not properly cleared when read() function call returns fewer bytes than expected.
CVE-2000-0536Bypass access restrictions when connecting from IP whose DNS reverse lookup does not return a hostname.
CVE-2001-0910Bypass access restrictions when connecting from IP whose DNS reverse lookup does not return a hostname.
CVE-2004-2371Game server doesn't check return values for functions that handle text strings and associated size values.
CVE-2005-1267Resultant infinite loop when function call returns -1 value.
Applicable Platforms
Languages:
Not Language-Specific : Undetermined
Modes of Introduction
Implementation
Taxonomy Mapping
  • PLOVER
  • Software Fault Patterns
  • SEI CERT Perl Coding Standard
Notes
RelationshipUsually primary, but can be resultant from issues such as behavioral change or API abuse. This can produce resultant vulnerabilities.