Skip to content

Commit

Permalink
[Fix] URL inputs to not submit numeric hostnames and url without doma…
Browse files Browse the repository at this point in the history
…in (#6482)

## ISSUE (BUG)

- Fixes #5396

## Description 

- When given a string like **https://300**, it interprets 300 as the
hostname, which it then converts to an IP address, what i did was to
check if the entire string (ignoring the protocol ) is number then don't
submit it all within zod and it makes sense to do that cause.

- The range for valid 32-bit unsigned integers is 0 to 4294967295 (which
corresponds to 0.0.0.0 to 255.255.255.255) so other than this numbers by
default URL objects throws invalid.




https://github.com/user-attachments/assets/1da92aeb-d50c-43a3-87ea-78a059d3fa84
  • Loading branch information
Nabhag8848 authored Aug 8, 2024
1 parent 02a1da1 commit 320742c
Showing 1 changed file with 12 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,18 @@ export const absoluteUrlSchema = z
.or(
z
.string()
.transform((value) => `https://${value}`)
.transform((value) => {
try {
const url = `https://${value}`.trim();
return isNaN(Number(value.trim())) &&
new URL(url) &&
/\.[a-z]{2,}$/.test(url)
? url
: '';
} catch {
return '';
}
})
.pipe(z.string().url()),
)
.or(z.literal(''));

0 comments on commit 320742c

Please sign in to comment.