diff --git a/content/4.sei-cert-c-coding-standard/03.rules/05.concurrency-con/05.con33-c.md b/content/4.sei-cert-c-coding-standard/03.rules/05.concurrency-con/05.con33-c.md
index 5e10bf7f..821ba382 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/05.concurrency-con/05.con33-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/05.concurrency-con/05.con33-c.md
@@ -27,7 +27,7 @@ According to the C Standard, the library functions listed in the following table
| ` tmpnam() ` | ` tmpnam_r() ` in POSIX |
| ` mbrtoc16() ` , ` c16rtomb() ` ,
` mbrtoc32() ` , ` c32rtomb() ` | Do not call with a null ` mbstate_t * ` argument |
-Section 2.9.1 of the *Portable Operating System Interface (POSIX ® ), Base Specifications, Issue 7* \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \] extends the list of functions that are not required to be thread-safe.
+Section 2.9.1 of the *Portable Operating System Interface (POSIX ® ), Base Specifications, Issue 8* \[ [IEEE Std 1003.1:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \] extends the list of functions that are not required to be thread-safe.
## Noncompliant Code Example
@@ -248,6 +248,6 @@ CON33-C – CWE-377 =
|--------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------|
| \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \] | Section 2.9.1, "Thread Safety" |
| \[ [ISO/IEC 9899:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-ISO-IEC9899-2024) \] | Subclause 7.26.6.3, "The `strerror` Function" |
-| \[ [Open Group 1997](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup97) \] | Section 10.12, "Thread-Safe POSIX.1 and C-Language Functions" |
+| \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] | Section 2.9.1, "Thread-Safety" |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/06.declarations-and-initialization-dcl/05.dcl37-c.md b/content/4.sei-cert-c-coding-standard/03.rules/06.declarations-and-initialization-dcl/05.dcl37-c.md
index 30c63ce8..c40e473d 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/06.declarations-and-initialization-dcl/05.dcl37-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/06.declarations-and-initialization-dcl/05.dcl37-c.md
@@ -34,7 +34,7 @@ C Standard, 7.1.3 paragraph 1 \[ [ISO/IEC 9899:2024](/sei-cert-c-coding-standard
Additionally, subclause 7.33 defines many other reserved identifiers for future library directions.
-No other identifiers are reserved. (The POSIX standard extends the set of identifiers reserved by the C Standard to include an open-ended set of its own. See *Portable Operating System Interface \[POSIX ® \], Base Specifications, Issue 7* , [Section 2.2](http://www.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_02) , "The Compilation Environment" \[ [IEEE Std 1003.1-2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \].) The behavior of a program that declares or defines an identifier in a context in which it is reserved or that defines a reserved identifier as a macro name is undefined. (See [undefined behavior 105](/sei-cert-c-coding-standard/back-matter/cc-undefined-behavior#CC.UndefinedBehavior-ub_105) .)
+No other identifiers are reserved. (The POSIX standard extends the set of identifiers reserved by the C Standard to include an open-ended set of its own. See *Portable Operating System Interface \[POSIX ® \], Base Specifications, Issue 8* , [Section 2.2](https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html#tag_16_02) , "The Compilation Environment" \[ [IEEE Std 1003.1-2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \].) The behavior of a program that declares or defines an identifier in a context in which it is reserved or that defines a reserved identifier as a macro name is undefined. (See [undefined behavior 105](/sei-cert-c-coding-standard/back-matter/cc-undefined-behavior#CC.UndefinedBehavior-ub_105) .)
## Noncompliant Code Example (Include Guard)
@@ -332,7 +332,7 @@ Using reserved identifiers can lead to incorrect program operation.
| | |
| --- | --- |
-| \[ [IEEE Std 1003.1-2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \] | Section 2.2, "The Compilation Environment" |
+| \[ [IEEE Std 1003.1-2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \] | Section 2.2, "The Compilation Environment" |
| \[ [ISO/IEC 9899:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-ISO-IEC9899-2024) \] | 7.1.3, "Reserved Identifiers" 7.33.14, "Integer Types <stdint.h> " |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/07.environment-env/5.env33-c.md b/content/4.sei-cert-c-coding-standard/03.rules/07.environment-env/5.env33-c.md
index 6817e84f..19fce766 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/07.environment-env/5.env33-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/07.environment-env/5.env33-c.md
@@ -128,9 +128,13 @@ void func(char *input) {
This compliant solution is significantly different from the preceding noncompliant code example. First, `input` is incorporated into the `args` array and passed as an argument to `execve()` , eliminating concerns about buffer overflow or string truncation while forming the command string. Second, this compliant solution forks a new process before executing `"/usr/bin/any_cmd"` in the child process. Although this method is more complicated than calling `system()` , the added security is worth the additional effort.
-The exit status of 127 is the value set by the shell when a command is not found, and POSIX recommends that applications should do the same. XCU, Section 2.8.2, of *Standard for Information Technology—Portable Operating System Interface (POSIX®), Base Specifications, Issue 7* \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \], says
+The exit status of 127 is the value set by the shell when a command is not found, and POSIX recommends that applications should do the same. XCU, Section 2.8.2, of *Standard for Information Technology—Portable Operating System Interface (POSIX®), Base Specifications, Issue 8* \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \], says
-> If a command is not found, the exit status shall be 127. If the command name is found, but it is not an executable utility, the exit status shall be 126. Applications that invoke utilities without using the shell should use these exit status values to report similar errors.
+> The exit status of a command shall be determined as follows:
+> If the command is not found, the exit status shall be 127.
+> Otherwise, if the command name is found, but it is not an executable utility, the exit status shall be 126.
+> Otherwise, if the command terminated due to the receipt of a signal, the shell shall assign it an exit status greater than 128. The exit status shall identify, in an implementation-defined manner, which signal terminated the command. Note that shell implementations are permitted to assign an exit status greater than 255 if a command terminates due to a signal.
+> Otherwise, the exit status shall be the value obtained by the equivalent of the WEXITSTATUS macro applied to the status obtained by the wait() function (as defined in the System Interfaces volume of POSIX.1-2024). Note that for C programs, this value is equal to the result of performing a modulo 256 operation on the value passed to _Exit(), _exit(), or exit() or returned from main().
## Compliant Solution (Windows)
@@ -176,7 +180,7 @@ If the vulnerable program has elevated privileges, an attacker can manipulate th
## Compliant Solution (POSIX)
-An alternative to invoking the `system()` call to execute an external program to perform a required operation is to implement the functionality directly in the program using existing library calls. This compliant solution calls the POSIX `unlink()` function to remove a file without invoking the `system()` function \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) [\]](https://pubs.opengroup.org/onlinepubs/9699919799/)
+An alternative to invoking the `system()` call to execute an external program to perform a required operation is to implement the functionality directly in the program using existing library calls. This compliant solution calls the POSIX `unlink()` function to remove a file without invoking the `system()` function \[ [IEEE Std 1003.1:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) [\]](https://pubs.opengroup.org/onlinepubs/9799919799/)
::code-block{quality="good"}
``` c
@@ -394,7 +398,7 @@ ENV33-C = Union( CWE-78, list), where list =
| | |
| --- | --- |
-| \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \] | XSH, System Interfaces, `exec` XSH, System Interfaces, `popen` XSH, System Interfaces, `unlink` |
+| \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \] | XSH, System Interfaces, `exec` XSH, System Interfaces, `popen` XSH, System Interfaces, `unlink` |
| \[ [Wheeler 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Wheeler04) \] | |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/02.pos30-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/02.pos30-c.md
index c69e0da0..c86cfd98 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/02.pos30-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/02.pos30-c.md
@@ -132,7 +132,6 @@ CWE-170 = Union( POS30-C, list) where list =
| |
|---------------------------------------------------------------------------------------------------------------|
| \[ [Ilja 2006](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-ilja06) \] |
-| \[ [Open Group 1997a](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup97) \] |
-| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] |
+| \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/03.pos34-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/03.pos34-c.md
index fd5ff7b0..694dcd30 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/03.pos34-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/03.pos34-c.md
@@ -9,7 +9,7 @@ tags:
---
# POS34-C. Do not call putenv() with a pointer to an automatic variable as the argument
-The POSIX function `putenv()` is used to set environment variable values. The `putenv()` function does not create a copy of the string supplied to it as an argument; rather, it inserts a pointer to the string into the environment array. If a pointer to a buffer of automatic storage duration is supplied as an argument to `putenv()` , the memory allocated for that buffer may be overwritten when the containing function returns and stack memory is recycled. This behavior is noted in the Open Group Base Specifications, Issue 6 \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \]:
+The POSIX function `putenv()` is used to set environment variable values. The `putenv()` function does not create a copy of the string supplied to it as an argument; rather, it inserts a pointer to the string into the environment array. If a pointer to a buffer of automatic storage duration is supplied as an argument to `putenv()` , the memory allocated for that buffer may be overwritten when the containing function returns and stack memory is recycled. This behavior is noted in the Open Group Base Specifications, Issue 8 \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \]:
> A potential error is to call `putenv()` with an automatic variable as the argument, then return from the calling function while `string` is still part of the environment.
@@ -54,7 +54,7 @@ int func(const char *var) {
```
::
-According to the \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] entry for `putenv()` :
+According to the \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] entry for `putenv()` :
> ...the string pointed to by *string* shall become part of the environment, so altering the string shall change the environment.
@@ -86,9 +86,9 @@ int func(const char *var) {
```
::
-The POSIX `setenv()` function is preferred over this function \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \]. In particular, using `putenv()` will necessarily leak memory if called multiple times for the same environment variable, due to restrictions on when you can safely free the old value. According to the \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] entry for `putenv()` :
+The POSIX `setenv()` function is preferred over this function \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \]. In particular, using `putenv()` will necessarily leak memory if called multiple times for the same environment variable, due to restrictions on when you can safely free the old value. According to the \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] entry for `putenv()` :
-> Although the space used by *string* is no longer used once a new string which defines *name* is passed to *putenv* (), if any thread in the application has used [*getenv* ()](https://pubs.opengroup.org/onlinepubs/9699919799/functions/getenv.html) to retrieve a pointer to this variable, it should not be freed by calling [*free* ()](https://pubs.opengroup.org/onlinepubs/9699919799/functions/free.html) . If the changed environment variable is one known by the system (such as the locale environment variables) the application should never free the buffer used by earlier calls to *putenv* () for the same variable.
+> Although the space used by *string* is no longer used once a new string which defines *name* is passed to *putenv* (), if any thread in the application has used [*getenv* ()](https://pubs.opengroup.org/onlinepubs/9799919799/functions/getenv.html) to retrieve a pointer to this variable, it should not be freed by calling [*free* ()](https://pubs.opengroup.org/onlinepubs/9799919799/functions/free.html) . If the changed environment variable is one known by the system (such as the locale environment variables) the application should never free the buffer used by earlier calls to *putenv* () for the same variable.
## Compliant Solution ( `setenv()` )
@@ -164,6 +164,6 @@ CWE-391 = Union( ERR33-C, POS34-C, list) where list =
| --- | --- |
| \[ [Dowd 2006](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Dowd06) \] | Chapter 10, "UNIX Processes" |
| \[ [ISO/IEC 9899:2024](https://www.securecoding.cert.org/confluence/display/seccode/AA.+Bibliography#AABibliography-ISOIEC9899-2024) \] | Section 6.2.4, "Storage Durations of Objects" Section 7.24.3, "Memory Management Functions" |
-| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] | [`putenv()`](http://www.opengroup.org/onlinepubs/009695399/functions/putenv.html) [`setenv()`](http://www.opengroup.org/onlinepubs/009695399/functions/setenv.html) |
+| \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] | [`putenv()`](https://pubs.opengroup.org/onlinepubs/9799919799/functions/putenv.html) [`setenv()`](https://pubs.opengroup.org/onlinepubs/9799919799/functions/setenv.html) |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/04.pos35-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/04.pos35-c.md
index 824fa29f..533cb8ba 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/04.pos35-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/04.pos35-c.md
@@ -164,7 +164,7 @@ CWE-764 is about semaphores, or objects capable of being locked multiple times.
| --- | --- |
| \[ [Dowd 2006](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Dowd06) \] | Chapter 9, "UNIX 1: Privileges and Files" |
| \[ [ISO/IEC 9899:2024](https://www.securecoding.cert.org/confluence/display/seccode/AA.+Bibliography#AABibliography-ISOIEC9899-2024) \] | Section 7.23, "Input/output `<stdio.h>` " |
-| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] | [lstat()](http://www.opengroup.org/onlinepubs/000095399/functions/lstat.html) [fstat()](http://www.opengroup.org/onlinepubs/009695399/functions/fstat.html) [open()](http://www.opengroup.org/onlinepubs/009695399/functions/open.html) |
+| \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] | [lstat()](https://pubs.opengroup.org/onlinepubs/9799919799/functions/fstatat.html) [fstat()](https://pubs.opengroup.org/onlinepubs/9799919799/functions/fstat.html) [open()](https://pubs.opengroup.org/onlinepubs/9799919799/functions/open.html) |
| \[ [Seacord 2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Seacord2013) \] | Chapter 8, "File I/O" |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/05.pos36-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/05.pos36-c.md
index 102c6f39..17acf388 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/05.pos36-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/05.pos36-c.md
@@ -13,7 +13,7 @@ tags:
In case of set-user-ID and set-group-ID programs, when the effective user ID and group ID are different from those of the real user, it is important to drop not only the user-level privileges but also the group privileges. While doing so, the order of revocation must be correct.
-POSIX defines `setgid()` to have the following behavior \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \]:
+POSIX defines `setgid()` to have the following behavior \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \]:
> If the process has appropriate privileges, `setgid()` shall set the real group ID, effective group ID, and the saved set-group-ID of the calling process to `gid` .
>
@@ -196,7 +196,7 @@ CWE-696 = Union( POS36-C, list) where list =
| --- | --- |
| \[ [Chen 2002](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Chen02) \] | "Setuid Demystified" |
| \[ [Dowd 2006](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Dowd06) \] | Chapter 9, "UNIX I: Privileges and Files" |
-| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] | [`setuid()`](http://www.opengroup.org/onlinepubs/009695399/functions/setuid.html) [`setgid()`](http://www.opengroup.org/onlinepubs/009695399/functions/setgid.html) |
+| \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] | [`setuid()`](https://pubs.opengroup.org/onlinepubs/9799919799/functions/setuid.html) [`setgid()`](https://pubs.opengroup.org/onlinepubs/9799919799/functions/setgid.html) |
| \[ [Tsafrir 2008](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Tsafrir08) \] | "The Murky Issue of Changing Process Identity: Revising 'Setuid Demystified'" |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/06.pos37-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/06.pos37-c.md
index 6bd6e9c4..3cd04c88 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/06.pos37-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/06.pos37-c.md
@@ -10,7 +10,7 @@ tags:
---
# POS37-C. Ensure that privilege relinquishment is successful
-The POSIX `setuid()` function has complex semantics and platform-specific behavior \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \].
+The POSIX `setuid()` function has complex semantics and platform-specific behavior \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \].
> If the process has appropriate privileges, `setuid()` shall set the real user ID, effective user ID, and the saved set-user-ID of the calling process to `uid` .
>
@@ -262,7 +262,7 @@ Search for vulnerabilities resulting from the violation of this rule on the [CER
|--------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| \[ [Chen 2002](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Chen02) \] | "Setuid Demystified" |
| \[ [Dowd 2006](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Dowd06) \] | Chapter 9, "Unix I: Privileges and Files" |
-| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] | [`setuid()`](http://www.opengroup.org/onlinepubs/009695399/functions/setuid.html) [`getuid()`](http://www.opengroup.org/onlinepubs/009695399/functions/getuid.html) [`seteuid()`](http://www.opengroup.org/onlinepubs/009695399/functions/seteuid.html) |
+| \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] | [`setuid()`](https://pubs.opengroup.org/onlinepubs/9799919799/functions/setuid.html) [`getuid()`](https://pubs.opengroup.org/onlinepubs/9799919799/functions/getuid.html) [`seteuid()`](https://pubs.opengroup.org/onlinepubs/9799919799/functions/seteuid.html) |
| \[ [Tsafrir 2008](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Tsafrir08) \] | "The Murky Issue of Changing Process Identity: Revising 'Setuid Demystified'" |
| \[ [Wheeler 2003](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Wheeler03) \] | [Section 7.4, "Minimize Privileges"](https://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/minimize-privileges.html) |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/08.pos39-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/08.pos39-c.md
index 6399ff36..6221a80b 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/08.pos39-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/08.pos39-c.md
@@ -90,6 +90,6 @@ If the programmer is careless, this bug is likely. However, it will immediately
| | |
|--------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
| \[ [MSDN](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-MSDN) \] | ["Winsock Functions"](https://msdn.microsoft.com/en-us/library/ms741394%28VS.85%29.aspx) |
-| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] | [htonl, htons, ntohl, ntohs—Convert Values between Host and Network Byte Order](http://www.opengroup.org/onlinepubs/009695399/functions/htonl.html) |
+| \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] | [htonl, htons, ntohl, ntohs—Convert Values between Host and Network Byte Order](https://pubs.opengroup.org/onlinepubs/9799919799/functions/htonl.html) |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/09.pos44-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/09.pos44-c.md
index a5857675..fa8629fe 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/09.pos44-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/09.pos44-c.md
@@ -41,7 +41,7 @@ int main(void) {
## Compliant Solution
-This compliant code uses instead the `pthread_cancel()` function to terminate the thread. The thread continues to run until it reaches a cancellation point. See [*The Open Group Base Specifications Issue 6, IEEE Std 1003.1, 2004 Edition*](http://www.opengroup.org/onlinepubs/009695399/toc.htm) \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] for lists of functions that are required and allowed to be cancellation points. If the cancellation type is set to asynchronous, the thread is terminated immediately. However, POSIX requires only the `pthread_cancel()` , `pthread_setcancelstate()` , and `pthread_setcanceltype()` functions to be async-cancel safe. An application that calls other POSIX functions with asynchronous cancellation enabled is nonconforming. Consequently, we recommend disallowing asynchronous cancellation, as explained by [POS47-C. Do not use threads that can be canceled asynchronously](/sei-cert-c-coding-standard/rules/posix-pos/pos47-c) .
+This compliant code uses instead the `pthread_cancel()` function to terminate the thread. The thread continues to run until it reaches a cancellation point. See [*The Open Group Base Specifications Issue 8, IEEE Std 1003.1, 2024 Edition*](https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/contents.html) \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] for lists of functions that are required and allowed to be cancellation points. If the cancellation type is set to asynchronous, the thread is terminated immediately. However, POSIX requires only the `pthread_cancel()` , `pthread_setcancelstate()` , and `pthread_setcanceltype()` functions to be async-cancel safe. An application that calls other POSIX functions with asynchronous cancellation enabled is nonconforming. Consequently, we recommend disallowing asynchronous cancellation, as explained by [POS47-C. Do not use threads that can be canceled asynchronously](/sei-cert-c-coding-standard/rules/posix-pos/pos47-c) .
::code-block{quality="good"}
``` c
@@ -98,6 +98,6 @@ Search for vulnerabilities resulting from the violation of this rule on the [CER
|-----------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
| \[ [OpenBSD](https://www.securecoding.cert.org/confluence/display/seccode/AA.+Bibliography#AABibliography-OpenBSD) \] | [`signal()` Man Page](http://www.openbsd.org/cgi-bin/man.cgi?query=signal) |
| \[ [MKS](https://www.securecoding.cert.org/confluence/display/seccode/AA.+Bibliography#AABibliography-MKS) \] | [`pthread_cancel()` Man Page](https://www.mkssoftware.com/docs/man3/pthread_cancel.3.asp) |
-| \[ [Open Group 2004](https://www.securecoding.cert.org/confluence/display/seccode/AA.+Bibliography#AABibliography-OpenGroup04) \] | [Threads Overview](http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html) |
+| \[ [Open Group 2024](https://www.securecoding.cert.org/confluence/display/seccode/AA.+Bibliography#AABibliography-OpenGroup24) \] | [Threads Overview](https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html#tag_16_09) |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/10.pos47-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/10.pos47-c.md
index e9e839e5..c00b6d55 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/10.pos47-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/10.pos47-c.md
@@ -9,7 +9,7 @@ tags:
In threading, pthreads can optionally be set to cancel immediately or defer until a specific cancellation point. Canceling asynchronously (immediately) is dangerous, however, because most threads are in fact not safe to cancel immediately.
-The [IEEE standards page](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) states that
+The [IEEE standards page](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) states that
> only functions that are cancel-safe may be called from a thread that is asynchronously cancelable.
@@ -133,7 +133,7 @@ Furthermore, though less likely, the program can still deadlock if the worker th
## Compliant Solution
-From [IEEE standards page](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) :
+From [IEEE standards page](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) :
> The cancelability state and type of any newly created threads, including the thread in which main() was first invoked, shall be PTHREAD_CANCEL_ENABLE and PTHREAD_CANCEL_DEFERRED respectively.
@@ -203,6 +203,6 @@ In Java, similar reasoning resulted in the deprecation of `Thread.stop()` .
| | |
|-----------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------|
| \[ [MKS](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-MKS) \] | [`pthread_cancel()` Man Page](https://www.mkssoftware.com/docs/man3/pthread_cancel.3.asp) |
-| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) | [Threads Overview](http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html) |
+| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) | [Threads Overview](https://pubs.opengroup.org/onlinepubs/9799919799/functions/V2_chap02.html#tag_16_09) |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/11.pos48-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/11.pos48-c.md
index b8745926..77e29d42 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/11.pos48-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/11.pos48-c.md
@@ -126,6 +126,6 @@ CWE-667 = Union, CON31-C, POS48-C, list) where list =
| | |
| --- | --- |
-| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] | [`pthread_mutex_lock()/pthread_mutex_unlock()`](http://www.opengroup.org/onlinepubs/009695399/functions/pthread_mutex_lock.html) [`pthread_mutex_destroy()`](http://www.opengroup.org/onlinepubs/009695399/functions/pthread_mutex_destroy.html) |
+| \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] | [`pthread_mutex_lock()/pthread_mutext_trylock()/pthread_mutex_unlock()`](https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_lock.html) [`pthread_mutex_destroy()`](https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_mutex_destroy.html) |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/15.pos52-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/15.pos52-c.md
index e667df3b..b9d00dc9 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/15.pos52-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/15.pos52-c.md
@@ -185,6 +185,6 @@ CWE-557 = Union( POS52-C, list) where list =
| | |
| --- | --- |
| \[ [Barney 2010](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Barney10) \] | [POSIX Threads Programming](https://computing.llnl.gov/tutorials/pthreads/) |
-| \[ [Open Group](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] | [pthread_cancel()](http://www.opengroup.org/onlinepubs/009695399/functions/pthread_cancel.html) [recv()](http://www.opengroup.org/onlinepubs/009695399/functions/recv.html) |
+| \[ [Open Group](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] | [pthread_cancel()](https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cancel.html) [recv()](https://pubs.opengroup.org/onlinepubs/9799919799/functions/recv.html) |
diff --git a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/16.pos53-c.md b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/16.pos53-c.md
index 2c9140e0..0a084881 100644
--- a/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/16.pos53-c.md
+++ b/content/4.sei-cert-c-coding-standard/03.rules/16.posix-pos/16.pos53-c.md
@@ -7,7 +7,7 @@ tags:
---
# POS53-C. Do not use more than one mutex for concurrent waiting operations on a condition variable
-`pthread_cond_wait()` and `pthread_cond_timedwait()` take a condition variable and locked mutex as arguments. These functions unlock the mutex until the condition variable is signaled and then relock the mutex before returning. While a thread is waiting on a particular condition variable and mutex, other threads may only wait on the same condition variable if they also pass the same mutex as an argument. This requirement is noted in the *Open Group Base Specifications, Issue 6* :
+`pthread_cond_wait()` and `pthread_cond_timedwait()` take a condition variable and locked mutex as arguments. These functions unlock the mutex until the condition variable is signaled and then relock the mutex before returning. While a thread is waiting on a particular condition variable and mutex, other threads may only wait on the same condition variable if they also pass the same mutex as an argument. This requirement is noted in the *Open Group Base Specifications, Issue 8* :
> As long as at least one thread is blocked on the condition variable. During this time, the effect of an attempt by any thread to wait on that condition variable using a different mutex is undefined.
@@ -258,6 +258,6 @@ The severity is medium because improperly accessing shared data could lead to da
| | |
|--------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------|
-| \[ [Open Group 2004](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup04) \] | [`pthread_cond_timedwait()/pthread_cond_wait()`](http://www.opengroup.org/onlinepubs/009695399/functions/pthread_cond_timedwait.html) |
+| \[ [Open Group 2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-OpenGroup24) \] | [`pthread_cond_clockwait`, `pthread_cond_timedwait`, `pthread_cond_wait` - wait on a condition](https://pubs.opengroup.org/onlinepubs/9799919799/functions/pthread_cond_clockwait.html) |
diff --git a/content/4.sei-cert-c-coding-standard/08.recommendations/08.error-handling-err/5.err04-c.md b/content/4.sei-cert-c-coding-standard/08.recommendations/08.error-handling-err/5.err04-c.md
index 1a274c41..81a9db83 100644
--- a/content/4.sei-cert-c-coding-standard/08.recommendations/08.error-handling-err/5.err04-c.md
+++ b/content/4.sei-cert-c-coding-standard/08.recommendations/08.error-handling-err/5.err04-c.md
@@ -95,7 +95,7 @@ However, exiting from `main` is conditional on correctly handling all errors in
Calling `_Exit()` causes [normal program termination](/sei-cert-c-coding-standard/back-matter/bb-definitions#BB.Definitions-normaltermination) to occur. Like the `exit()` function, `_Exit()` takes one argument of type `int` and never returns. However, unlike `exit()` , whether `_Exit()` closes open streams, flushes stream buffers, \[ [1](#ERR04C.Chooseanappropriateterminationstrategy-1) \] or deletes temporary files is [implementation-defined](/sei-cert-c-coding-standard/back-matter/bb-definitions#BB.Definitions-implementation-definedbehavior) . Functions registered by `atexit()` are not executed.
- \[1\] Note that POSIX strengthens the specification for `_Exit()` by prohibiting the function from flushing stream buffers. See the documentation of the function in [The Open Group Base Specifications Issue 7,](http://www.opengroup.org/onlinepubs/9699919799) IEEE Std 1003.1, 2013 Edition \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \].
+ \[1\] Note that POSIX strengthens the specification for `_Exit()` by prohibiting the function from flushing stream buffers. See the documentation of the function in [The Open Group Base Specifications Issue 8](https://pubs.opengroup.org/onlinepubs/9799919799/) IEEE Std 1003.1, 2024 Edition \[ [IEEE Std 1003.1:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \].
::code-block{quality="good"}
``` c
@@ -127,7 +127,7 @@ if (/* Something really bad happened */) {
As with `_Exit()` , whether open streams with unwritten buffered data are flushed, \[ [2](#ERR04C.Chooseanappropriateterminationstrategy-2) \] open streams are closed, or temporary files are removed is [implementation-defined](/sei-cert-c-coding-standard/back-matter/bb-definitions#BB.Definitions-implementation-defined) . Functions registered by `atexit()` are not executed. (See [ERR06-C. Understand the termination behavior of assert() and abort()](/sei-cert-c-coding-standard/recommendations/error-handling-err/err06-c) .)
- \[2\] Unlike in the case of `_Exit()` , POSIX explicitly permits but does not require [implementations](/sei-cert-c-coding-standard/back-matter/bb-definitions#BB.Definitions-implementation) to flush stream buffers. See the documentation of the function in [The Open Group Base Specifications Issue 7,](http://www.opengroup.org/onlinepubs/9699919799) IEEE Std 1003.1, 2013 Edition \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \].
+ \[2\] Unlike in the case of `_Exit()` , POSIX explicitly permits but does not require [implementations](/sei-cert-c-coding-standard/back-matter/bb-definitions#BB.Definitions-implementation) to flush stream buffers. See the documentation of the function in [The Open Group Base Specifications Issue 8](https://pubs.opengroup.org/onlinepubs/9799919799/) IEEE Std 1003.1, 2024 Edition \[ [IEEE Std 1003.1:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \].
## Summary
@@ -241,7 +241,7 @@ Search for [vulnerabilities](/sei-cert-c-coding-standard/back-matter/bb-definiti
| | |
| --- | --- |
-| \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \] | XSH, System Interfaces, `exit` |
+| \[ [IEEE Std 1003.1:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \] | XSH, System Interfaces, `exit` |
| \[ [ISO/IEC 9899:2011](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-ISO-IEC9899-2011) \] | Subclause 5.1.2.2.3, "Program Termination" Subclause 7.22.4, "Communication with the Environment" |
diff --git a/content/4.sei-cert-c-coding-standard/08.recommendations/11.input-output-fio/03.fio02-c.md b/content/4.sei-cert-c-coding-standard/08.recommendations/11.input-output-fio/03.fio02-c.md
index 7249e509..a194c6da 100644
--- a/content/4.sei-cert-c-coding-standard/08.recommendations/11.input-output-fio/03.fio02-c.md
+++ b/content/4.sei-cert-c-coding-standard/08.recommendations/11.input-output-fio/03.fio02-c.md
@@ -76,11 +76,11 @@ if (fopen(argv[1], "w") == NULL) {
Canonicalizing file names is difficult and involves an understanding of the underlying file system.
-The POSIX `realpath()` function can assist in converting path names to their canonical form. According to *Standard for Information Technology—Portable Operating System Interface (POSIX®), Base Specifications, Issue 7* (IEEE Std 1003.1, 2013 Edition) \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \],
+The POSIX `realpath()` function can assist in converting path names to their canonical form. According to *Standard for Information Technology—Portable Operating System Interface (POSIX®), Base Specifications, Issue 8* (IEEE Std 1003.1, 2024 Edition) \[ [IEEE Std 1003.1:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \],
> The `realpath()` function shall derive, from the pathname pointed to by `file_name` , an absolute pathname that names the same file, whose resolution does not involve ' `.` ', ' `..` ', or symbolic links.
-Further verification, such as ensuring that two successive slashes or unexpected special files do not appear in the file name, must be performed. See [Section 4.12, "Pathname Resolution,"](https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04_12) of IEEE Std 1003.1, 2013 Edition, for more details on how path name resolution is performed \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \].
+Further verification, such as ensuring that two successive slashes or unexpected special files do not appear in the file name, must be performed. See [Section 4.16, "Pathname Resolution"](https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap04.html#tag_04_16) of IEEE Std 1003.1, 2024 Edition, for more details on how path name resolution is performed \[ [IEEE Std 1003.1:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \].
Many manual pages for the `realpath()` function come with an alarming warning, such as this one from the *Linux Programmer's Manual* \[ [Linux 2008](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Linux08) \]:
@@ -168,11 +168,11 @@ Care still must be taken to avoid creating a [time-of-check, time-of-use (TOCTOU
## Noncompliant Code Example (POSIX)
-Calling the `realpath()` function with a non-null `resolved_path` when `PATH_MAX` is not defined as a constant is not safe. IEEE Std 1003.1, 2013 Edition \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \], effectively forbids such uses of `realpath()` :
+Calling the `realpath()` function with a non-null `resolved_path` when `PATH_MAX` is not defined as a constant is not safe. IEEE Std 1003.1, 2024 Edition \[ [IEEE Std 1003.1:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \], effectively forbids such uses of `realpath()` :
> If *resolved_name* is not a null pointer and {PATH_MAX} is not defined as a constant in the **\** header, the behavior is undefined.
-The rationale from IEEE Std 1003.1, 2013 Edition, explains why this case is unsafe:
+The rationale from IEEE Std 1003.1, 2024 Edition, explains why this case is unsafe:
> Since *realpath* ( ) has no *length* argument, if {PATH_MAX} is not defined as a constant in **\** , applications have no way of determining how large a buffer they need to allocate for it to be safe to pass to *realpath* ( ). A {PATH_MAX} value obtained from a prior *pathconf* ( ) call is out-of-date by the time *realpath* ( ) is called. Hence the only reliable way to use *realpath* ( ) when {PATH_MAX} is not defined in **\** is to pass a null pointer for *resolved_name* so that *realpath* ( ) will allocate a buffer of the necessary size.
@@ -384,7 +384,7 @@ Search for [vulnerabilities](/sei-cert-c-coding-standard/back-matter/bb-definiti
| \[ [Howard 2002](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Howard02) \] | Chapter 11, "Canonical Representation Issues" |
| \[ [Linux 2008](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Linux08) \] | [`realpath(3)`](https://www.kernel.org/doc/man-pages/online/pages/man3/realpath.3.html) [`pathconf(3)`](https://www.kernel.org/doc/man-pages/online/pages/man3/pathconf.3.html) |
| \[ [MSDN](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-MSDN) \] | " [`GetFullPathName` Function](https://msdn.microsoft.com/en-us/library/aa364963.aspx) " |
-| \[ [IEEE Std 1003.1:2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2013) \] | [Section 4.12, "Pathname Resolution"](https://pubs.opengroup.org/onlinepubs/9699919799/) System Interfaces: `realpath` |
+| \[ [IEEE Std 1003.1:2024](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-IEEEStd1003.1-2024) \] | [Section 4.16, "Pathname Resolution"](https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/V1_chap04.html#tag_04_16) System Interfaces: `realpath` |
| \[ [Seacord 2013](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-Seacord2013) \] | Chapter 8, "File I/O" |
| \[ [VU#743092](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-743092) \] | |
| \[ [xorl 2009](/sei-cert-c-coding-standard/back-matter/aa-bibliography#AA.Bibliography-xorl2009) \] | [CVE-2009-1760: libtorrent Arbitrary File Overwrite](https://xorl.wordpress.com/2009/06/09/cve-2009-1760-libtorrent-arbitrary-file-overwrite/) |
diff --git a/content/5.sei-cert-cpp-coding-standard/4.back-matter/2.aa-bibliography.md b/content/5.sei-cert-cpp-coding-standard/4.back-matter/2.aa-bibliography.md
index 4238d205..656a2479 100644
--- a/content/5.sei-cert-cpp-coding-standard/4.back-matter/2.aa-bibliography.md
+++ b/content/5.sei-cert-cpp-coding-standard/4.back-matter/2.aa-bibliography.md
@@ -133,6 +133,8 @@ tags:
\[NIST 2006\] NIST. [*SAMATE Reference Dataset*](https://samate.nist.gov/SRD/) . 2006.
+ \[Open Group 2024\] The Open Group. [*The Open Group Base Specifications Issue 8, IEEE Std 1003.1, 2024 Edition*](http://www.opengroup.org/onlinepubs/9699919799/toc.htm) . 2024.
+
\[Open Group 2013\] The Open Group. [*The Open Group Base Specifications Issue 7, IEEE Std 1003.1, 2013 Edition*](http://www.opengroup.org/onlinepubs/9699919799/toc.htm) . 2013.
\[Open Group 2008\] The Open Group. [*The Open Group Base Specifications Issue 7, IEEE Std 1003.1, 2008 Edition*](http://www.opengroup.org/onlinepubs/9699919799/toc.htm) . 2008.