Closed Bug 142345 Opened 24 years ago Closed 24 years ago

Wrong code fragments in mozilla/nsprbub/pr/src/md/uxshm.c

Categories

(NSPR :: NSPR, defect)

Sun
Solaris
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: vgolitsin, Assigned: wtc)

References

Details

Attachments

(1 file)

The file contains the following code fragment (routine _MD_OpenSharedMemory, lines 114-122): int osfd = open( shm->ipcname, (O_RDWR | O_CREAT), shm->mode ); if ( -1 == osfd ) { _PR_MD_MAP_OPEN_ERROR( errno ); PR_FREEIF( shm->ipcname ); PR_DELETE( shm ); return( NULL ); } if ( close(osfd == -1 )) { _PR_MD_MAP_CLOSE_ERROR( errno ); The line if ( close(osfd == -1 )) { is due to a obevious mistake... The same is repeated in _MD_CloseSharedMemory, the line 247. Even if the code is recently not used by Mozilla it worth to be fixed anyway. NOTE. I found the error just reviewing the code. It affects the paltforms supporting shared memory in the System V way (e.g. Sun).
Attached patch Proposed patchSplinter Review
Thanks for the bug report. You are right. I checked in the fix you suggested into the tip of NSPR. With the original code, we would close the Unix file descriptor 0 (because osfd is not equal to -1). close(0) would succeed in most processes (fd 0 is the standard input) and return 0, so the body of the if statement is not executed. This is why we have not noticed this bug.
Status: UNCONFIRMED → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Target Milestone: --- → 4.2.1
Target Milestone: 4.2.1 → 4.2.2
*** Bug 172910 has been marked as a duplicate of this bug. ***
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: