File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -8,9 +8,24 @@ type AuthenticatedImgProps = React.ImgHTMLAttributes<HTMLImageElement> & {
88
99export function AuthenticatedImg ( { src, ...props } : AuthenticatedImgProps ) {
1010 const resolvedSrc = useMediaSrc ( src ) ;
11- const safeSrc = getSafeMediaUrl ( resolvedSrc ?? src ) ;
11+ const candidateSrc = resolvedSrc ?? src ;
12+ const safeSrc = getSafeMediaUrl ( candidateSrc ) ;
1213
1314 if ( ! safeSrc ) return null ;
1415
15- return < img { ...props } src = { safeSrc } /> ;
16+ try {
17+ const parsedSrc = new URL ( safeSrc ) ;
18+
19+ if (
20+ parsedSrc . protocol !== 'blob:' &&
21+ parsedSrc . protocol !== 'http:' &&
22+ parsedSrc . protocol !== 'https:'
23+ ) {
24+ return null ;
25+ }
26+
27+ return < img { ...props } src = { parsedSrc . toString ( ) } /> ;
28+ } catch {
29+ return null ;
30+ }
1631}
Original file line number Diff line number Diff line change @@ -489,10 +489,26 @@ function FallbackImg({
489489} : ComponentPropsWithoutRef < 'img' > & { fallback : ReactNode } ) {
490490 const [ failed , setFailed ] = useState ( false ) ;
491491 const resolvedSrc = useMediaSrc ( src ) ;
492- const safeSrc = getSafeMediaUrl ( resolvedSrc ?? src ) ;
492+ const candidateSrc = resolvedSrc ?? src ;
493+ const safeSrc = getSafeMediaUrl ( candidateSrc ) ;
493494 if ( failed ) return < > { fallback } </ > ;
494495 if ( ! safeSrc ) return < > { fallback } </ > ;
495- return < img { ...props } src = { safeSrc } onError = { ( ) => setFailed ( true ) } /> ;
496+
497+ try {
498+ const parsedSrc = new URL ( safeSrc ) ;
499+
500+ if (
501+ parsedSrc . protocol !== 'blob:' &&
502+ parsedSrc . protocol !== 'http:' &&
503+ parsedSrc . protocol !== 'https:'
504+ ) {
505+ return < > { fallback } </ > ;
506+ }
507+
508+ return < img { ...props } src = { parsedSrc . toString ( ) } onError = { ( ) => setFailed ( true ) } /> ;
509+ } catch {
510+ return < > { fallback } </ > ;
511+ }
496512}
497513
498514export const getReactCustomHtmlParser = (
You can’t perform that action at this time.
0 commit comments