Add filename length checks to prevent the creation of files and folders
that cannot be listed, unlinked or renamed by subsequent calls.
These changes are sufficient to make the jffs2fsrenamelongname and
jffs2nandfsrenamelongname testcases pass.
Updates #5073
In _Terminate(), everything after invoking the fatal extensions is essentially
dead code. Simplify this code block and provide a reasonable safe fall-back
for badly configured applications. Just disable masked interrupts and execute
an idle loop.
Update #5067.
Previously the first cluster of the file was not updated when
truncating to 0 but was in any case freed.
Now the first cluster of the file is updated during the truncation,
leaving the directory entry in a consistent state.
Closes#2757
This is intended to close any valid FDs that were opened, but 0 is also
a valid FD. This change ensures that a FD of 0 is also closed properly.
Coverity CID 1467408 (original)
Coverity CID 1616151 (followup)
off_by_one: Testing whether handle fd is strictly greater than zero is
suspicious. fd leaks when it is zero.
Fix a race condition in which a file opened with O_TRUNC is made
available to other file functions expecting a file descriptor before
the truncation is performed.
This is only possible if the other thread was using an invalid file
descriptor as the open call has yet to finish.
Closes#5109
Coverity Scan spotted the possibility that the
_Objects_Information_table could be over-indexed if the API
value provided was too high. This function is only used during
initialization and the input should be trusted. Adding a debug
_Assert() emphasizes this trust.
Coverity CID 1512508
Closes#5084.
Coverity CID 1616018
O_SYNC and O_DSYNC have the same value which led Coverity to note that
checking for both values in if's or switches leads to dead code. The
solution is to add a cpp check that they are equal and enough commentary
so if they ever are not the same, there is a hint as to why the cpp
check got tripped.
Closes#5100.
- Implements necessary ACPICA OS Services Layer interfaces;
- Retrieve the RSDP from the FreeBSD Bootloader for amd64 or from multiboot2 for amd64efi;
- Add ACPI initialization routine;
- Use ACPI in bsp_reset.
Now as the default reporter is set to be a quiet reporter, we have stackchk test case for the default quiet reporter, stackchk03 for a custom user-defined reporter and stackchk04 for the detailed reporter function
rename now actively changes the inode of the file being renamed.
This change has been done to fix an issue when the file being renamed is already opened before the rename, in particular failing to update the inode number (and the two lookup tables) could cause at least two problems:
1) A new file created in the same source folder of the file being renamed may get the same fat file descriptor of the renamed file
2) An open to the renamed file opens a new fat file descriptor, thus putting out of sync the operations on the file (two distinct fat file descriptor working on the same clusters and entries)
Previously the inode was in any case changed once the file was closed.
Another possible solution would have been to separate the inode number from the lookup table, but this solution would have required much more memory because it needed to keep track of all files seen in the file system up to the last operation and not only the opened ones.
Closes#5044
The patch adds the generation of a notification after an Asynchronous I/O
request has been completed. The notification is generated using the aio_sigevent
filed in the aiocb struct, as defined by the posix specifiations.
A new control, ensuring the validity of the field, is added on each call to
aio_read(), aio_write() and aio_fsync().
The patch also adds tests to cover the new code, and fixes formatting errors of
various aio files.
This adds an environment variable that can be used to enable or disable
window size retrieval for the RTEMS shell. This will also disable window
size retrieval upon failure while allowing the user to re-enable it.
On systems that don't provide a proper terminal or have broken window
size detection, the RTEMS shell can take a long time execute commands if
the kernel tick interval is longer than 1ms. This updates the shell
window size retrieval timeout code to account for the kernel tick
interval bringing the experienced timeout from 12.5ms to 1.25ms when
using the default kernel tick interval (10ms).