Commit Graph

5981 Commits

Author SHA1 Message Date
Zoltán Kéri e75a49f095 encoding/base32: Set optimization mode for decode() 2024-12-24 16:07:01 +01:00
Zoltán Kéri 93238db202 encoding/base32: Use consistent allocator and add proper cleanup
Fix memory handling throughout base32 package:
- Make padding map package-level constant (to avoid repeated allocs)
- Use passed allocator in encode's make() call
- Add defer delete for allocated memory in encode
- Add proper cleanup in test cases
- Fix memory cleanup of output buffers

The changes ensure consistent allocator usage and cleanup in both
implementation and tests.
2024-12-24 16:00:00 +01:00
Zoltán Kéri f1f2ed3194 encoding/base32: Fix decode implementation per RFC 4648
Rework base32.decode() to properly handle all cases per RFC 4648:

- Fix error detection order:
  - Check minimum length first (Invalid_Length)
  - Check character validity (Invalid_Character)
  - Check padding and structure (Malformed_Input)

- Fix padding validation:
  - Add required padding length checks (2=6, 4=4, 5=3, 7=1 chars)
  - Ensure padding only appears at end
  - Fix handling of unpadded inputs

- Fix buffer handling:
  - Proper output buffer size calculation
  - Add bounds checking for buffer access
  - Add proper buffer validation

For example:
- "M" correctly returns Invalid_Length (too short)
- "mzxq====" correctly returns Invalid_Character (lowercase)
- "MZXQ=" correctly returns Malformed_Input (wrong padding)
- Unpadded input lengths must be multiples of 8

These changes make the decode function fully compliant with RFC 4648
requirements while providing proper error handling.
2024-12-24 15:52:33 +01:00
Zoltán Kéri 7672ac945a encoding/base32: Add RFC 4648 test suite
Add test suite based on RFC 4648 test vectors and validation rules:
- Add section 10 test vectors for valid encoding/decoding
- Add test cases for invalid character handling (section 3.2)
- Add test cases for padding validation (section 4)
- Add test cases for length requirements (section 6)

The test vectors verify that:
- Empty string encodes/decodes correctly
- Standard cases like "foo" -> "MZXW6===" work
- Invalid characters are rejected
- Missing or malformed padding is detected
- Invalid lengths are caught
2024-12-24 15:28:34 +01:00
Zoltán Kéri b9338777e3 encoding/base32: Fix buffer allocation and bounds checking
Fix buffer allocation size calculation and add proper bounds checking to
ensure output buffer has sufficient space. This fixes crashes that could
occur with inputs like "AA" and other edge cases where the output buffer
was too small.

Remove #no_bounds_check as proper bounds checking is necessary for safe
error handling. The small performance trade-off is worth the improved
robustness.
2024-12-24 02:20:32 +01:00
Zoltán Kéri 8c761627c8 encoding/base32: Replace assertions with error returns
Replace assertions with proper error handling in base32.decode() to allow
programs to handle invalid input gracefully rather than crashing.

The function now returns ([]byte, Error) instead of just []byte.
2024-12-24 02:17:57 +01:00
Jeroen van Rijn ad99d20d29 Remove outdated PNG save helpers 2024-12-23 16:33:23 +01:00
gingerBill 61368d942e Merge pull request #4589 from Pariatech/add-trunc-to-linalg-glsl
Add trunc to glsl linalg
2024-12-18 21:20:17 +00:00
Gabriel Pariat e0b7bfd21e add trunc to glsl linalg 2024-12-17 13:06:59 -05:00
Laytan 8b1c9b0ff5 Merge pull request #4568 from giuliano-macedo/master
docs: improved `slice.reinterpret` docstring
2024-12-14 16:46:17 +01:00
Giuliano Macedo 6785a485e3 docs: improved reinterpret docstring 2024-12-14 10:10:06 -03:00
GonkieDev 6bcfafc3a8 typo fixed (MOUSE_ATTRIUBTTES_CHANGED -> MOUSE_ATTRIBUTES_CHANGED) 2024-12-11 21:02:43 +00:00
Laytan Laats 6e1d028861 fix #4389 - retrieve file type by opening if other methods failed 2024-12-06 23:51:14 +01:00
Laytan Laats f1cae8d844 fix #4496 - allow unlock of unlocked mutex (making it consistent with windows behaviour) 2024-12-06 23:08:47 +01:00
Laytan Laats 7edd332993 fix #4536 - stack buffer overflow for size_of 0 types in struct unmarshal 2024-12-06 22:12:52 +01:00
gingerBill e4bdc4ff7c Merge pull request #4562 from dozn/patch-1
Move Struct Field Zipping Outside of Loop
2024-12-06 14:21:01 +00:00
Laytan Laats cf53404f5f sync: fix no new values 2024-12-05 20:05:19 +01:00
Laytan Laats ac3a87c2cf sync: fix require results 2024-12-05 19:04:45 +01:00
Laytan Laats ad438f418d sync: fix futexes on wasm 2024-12-05 19:00:45 +01:00
gingerBill d452d37b93 Fix #4537 2024-12-05 15:51:05 +00:00
dozn 37fb2754a1 Move Struct Field Zipping Outside of JSON Token Loop 2024-12-05 07:23:34 -08:00
Adam Zadrożny 5dfc24882f improve strings.index_multi
There's no point searching for substrings after lowest_index,
so let's not.

This significantly improves performance on long strings.
2024-12-04 14:29:49 +01:00
gingerBill c79466ab3c Merge pull request #4548 from Bazzas-Forks/linalg-clamp-length
[core:math/linalg] Add `linalg.clamp_length(vector, max_length) -> clamped_vector`
2024-12-04 12:05:06 +00:00
Ycros 7edc46f1b9 fix: regex's match_with_preallocated_capture returning num_groups 2024-12-04 13:51:27 +11:00
gingerBill af8122e8c7 Merge pull request #4541 from Waqar144/work/thread-pool-use-queue
Use a proper Queue in thread.Pool
2024-12-02 12:04:28 +00:00
gingerBill 1a84820e83 Merge pull request #4542 from FourteenBrush/master
Pass allocator to implicitly (de)allocating procs in `core:log`
2024-12-02 10:55:09 +00:00
gingerBill d0f87913e2 Fix #4549 2024-12-02 10:49:49 +00:00
Bazzagibbs 4b76568596 Add linalg.clamp_length(vector, max_length) -> clamped_vector 2024-12-02 11:58:36 +11:00
Damian Tarnawski 26415bcb0e Correct handling newlines between build tags in core:odin
Previously I thought that each newline worked as `OR`
basically the same as `,`.

This corrects this to work as `AND` instead.
2024-12-01 18:21:26 +01:00
FourteenBrush f9dc848926 Pass allocator to implicitly (de)allocating procs in core:log 2024-11-30 23:43:39 +01:00
Waqar Ahmed 8a27042d24 Use a proper Queue in thread.Pool
With lots of tasks the dynamic array takes a big performance hit as its
allocating all the time on pop_front
2024-11-30 22:29:47 +05:00
Laytan Laats 1cece52359 dynlib: unload library before loading again & add LIBRARY_FILE_EXTENSION constant 2024-11-28 21:08:08 +01:00
Jeroen van Rijn 8581240ece Make O_RDONLY default for os.open on all platforms.
And also moved Windows file procs to `os_windows.odin`, in line with all the other platforms who didn't have a dedicated `file_<platform>.odin`
2024-11-28 15:57:48 +01:00
Evan Martinez 36481f6d4a Fix binomial function 2024-11-28 00:28:26 -07:00
zhylmzr c2b6a14cd7 fix DNS_RECORD.Data error align on windows i386
fixed: https://github.com/odin-lang/Odin/issues/4520
2024-11-27 20:15:34 +08:00
Laytan Laats ad80aa6d28 sys/info & odin report: rework macos version retrieval 2024-11-26 22:28:21 +01:00
Laytan Laats 767daf4a9c add macos 15.1.1 to odin report and sys/info 2024-11-26 18:46:27 +01:00
o:tone c3478e0002 fix unmarshal unhandled error (#4515)
* fix unmarshal unhandled error
2024-11-25 13:15:33 +01:00
gingerBill 12e7ff1e3c Remove core:c/frontend 2024-11-24 12:32:10 +00:00
Colin Davidson da3a7a25c7 oops 2024-11-20 14:07:23 -08:00
Colin Davidson 3bb73eacfc fix parsing issue around utc/localtime split 2024-11-20 12:09:32 -08:00
jakubtomsu 86c84f2621 Fix a bug in hxa decoder found by the new check 2024-11-17 21:35:49 +01:00
Dudejoe870 4d22f1f544 Fix typo in Quaternion dot product 2024-11-17 10:42:59 -06:00
Laytan Laats 20f4f378b2 sys/posix: add MAP_ANONYMOUS 2024-11-17 13:52:08 +01:00
Laytan Laats 8f2766c4dc add missing macos version 2024-11-16 15:42:13 +01:00
gingerBill 0781871efd Merge pull request #4489 from laytan/os2-dir-leak-and-test
os2: fix leak in dir_windows, fix netbsd, and add a test for dir reading
2024-11-15 23:22:14 +00:00
Laytan Laats 282d956aa7 os2: skip dir test when unsupported 2024-11-15 21:56:55 +01:00
Laytan Laats ce74325673 sys/posix: fix dirfd on netbsd 2024-11-15 21:22:23 +01:00
NicknEma 5486327e0b Fix integer type
Change int to i32 so it is the correct size
2024-11-15 21:10:55 +01:00
Laytan Laats de9d0134e4 os2: fix file type detection in dir_windows 2024-11-15 21:08:14 +01:00