From: "Tomas Härdin" <tjoppen@acc.umu.se> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: Re: [FFmpeg-devel] [PATCH v2 1/1] avformat: Add IPFS protocol support. Date: Fri, 04 Feb 2022 11:29:41 +0100 Message-ID: <24c98478d87b49c631b48f7000dbde14e2163bb8.camel@acc.umu.se> (raw) In-Reply-To: <CAPd6JnEKOTUYgwxU_8aumhCTFdcfiuYtftU0V71+wF9-zq0MNQ@mail.gmail.com> ons 2022-02-02 klockan 14:56 +0100 skrev Mark Gaiser: > On Wed, Feb 2, 2022 at 2:21 PM Tomas Härdin <tjoppen@acc.umu.se> > wrote: > > > tis 2022-02-01 klockan 22:58 +0100 skrev Mark Gaiser: > > > > > > > > +typedef struct Context { > > > + AVClass *class; > > > + URLContext *inner; > > > + char *gateway; > > > > Is there not a maximum length that an HTTP URL can be? At least > > without > > query parameters. That way you avoid dynamic allocations. You'd > > have to > > separate the AVOption from such a buffer in that case, but I think > > you > > have to anyway. > > > > Could you provide more information on that? Or an example of what you > mean > exactly? > As far as i know there is no hard limit though it's very much advised > to > not go above 2048 characters. You could at least separate the variable that is set by the AVOption stuff from the buffer that's produced by the URL parsing stuff. Since you call ffurl_open_whitelist() immediately you could just use alloca() to allocate memory on the stack. That way you don't have to worry about deallocation at all *and* you can have it be arbitrarily large. If URLs have a spec'd maximum length then a buffer of constant size on the stack would work. > > > > > > + if (!ipfs_full_data_folder) { > > > + av_log(h, AV_LOG_DEBUG, "$IPFS_PATH is empty.\n"); > > > + > > > + // Try via the home folder. > > > + home_folder = getenv("HOME"); > > > + ipfs_full_data_folder = av_asprintf("%s/.ipfs/", > > > home_folder); > > > > Memory leak. This applies to most if not all av_asprintf() calls. > > > > Is there an advised way to neatly clean that up? > Sure, I can add a bunch of av_free calls to clean it up. But there > are > places where it's not as straightforward like where the av_asprintf > was > done in an if statement. How do I maintain the knowledge that > av_asprintf > was used to call av_free later? goto as the others pointed out > > > > > > +static int translate_ipfs_to_http(URLContext *h, const char > > > *uri, > > > int flags, AVDictionary **options) > > > +{ > > > + const char *ipfs_cid; > > > + const char *protocol_path_suffix = "ipfs/"; > > > + char *fulluri; > > > + int ret; > > > + Context *c = h->priv_data; > > > + int is_ipfs = (av_strstart(uri, "ipfs://", &ipfs_cid) || > > > av_strstart(uri, "ipfs:", &ipfs_cid)); > > > + int is_ipns = (av_strstart(uri, "ipns://", &ipfs_cid) || > > > av_strstart(uri, "ipns:", &ipfs_cid)); > > > > https://docs.ipfs.io/concepts/ipfs-gateway/ claims ipfs:// is the > > canonical form. No mentioned is made of any ipfs:{CID} form. > > Incorrect > > URLs should be rejected, not silently patched. > > > > I'd like to make a decision here. This current logic (ipfs:// and > ipfs:, > same for ipns) is inspired by other protocols that ffmpeg supported. > I > simply copied how they work to be consistent. > Do i: > 1. keep it as is and be consistent with the rest? > 2. only allow ipfs:// and ipns://? > Which protocols? This laxness in lavf is worrisome. It breeds laxness in other projects. /Tomas _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-02-04 10:29 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-02-01 21:58 [FFmpeg-devel] [PATCH v2 0/1] " Mark Gaiser 2022-02-01 21:58 ` [FFmpeg-devel] [PATCH v2 1/1] avformat: " Mark Gaiser 2022-02-02 0:26 ` Timo Rothenpieler 2022-02-02 0:33 ` Mark Gaiser 2022-02-02 0:34 ` Mark Gaiser 2022-02-02 0:39 ` Timo Rothenpieler 2022-02-02 0:44 ` Andreas Rheinhardt 2022-02-02 0:49 ` Timo Rothenpieler 2022-02-02 0:50 ` Mark Gaiser 2022-02-02 0:54 ` Timo Rothenpieler 2022-02-02 1:14 ` Mark Gaiser 2022-02-02 2:29 ` Lynne 2022-02-02 2:51 ` Mark Gaiser 2022-02-02 9:55 ` Lynne 2022-02-02 13:21 ` Tomas Härdin 2022-02-02 13:56 ` Mark Gaiser 2022-02-02 14:24 ` Timo Rothenpieler 2022-02-02 14:39 ` Mark Gaiser 2022-02-04 10:29 ` Tomas Härdin [this message] 2022-02-04 14:21 ` Mark Gaiser 2022-02-02 13:29 ` Michael Niedermayer 2022-02-02 14:23 ` Mark Gaiser 2022-02-03 14:54 ` Michael Niedermayer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=24c98478d87b49c631b48f7000dbde14e2163bb8.camel@acc.umu.se \ --to=tjoppen@acc.umu.se \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git