Skip to content
Permalink
Browse files

[Downloader] Catch OSErrors from invalid repo names (#3029)

* [Downloader] Ensure repo names only contain the characters stated

* Create 2827.bugfix.rst

* [Downloader] Catch OSErrors from invalid filenames

* Update 2827.bugfix.rst

* Style

* do the thing again

* Update 2827.bugfix.rst
  • Loading branch information...
Flame442 authored and mikeshardmind committed Oct 5, 2019
1 parent ea77de5 commit 9b60816ebd0dbbc358ddb8f97fda68c23d795140
Showing with 14 additions and 1 deletion.
  1. +1 −0 changelog.d/downloader/2827.bugfix.rst
  2. +13 −1 redbot/cogs/downloader/downloader.py
@@ -0,0 +1 @@
Repo names can now only contain the characters listed in the help text (A-Z, 0-9, underscores, and hyphens).
@@ -1,6 +1,7 @@
import asyncio
import contextlib
import os
import re
import shutil
import sys
from pathlib import Path
@@ -222,12 +223,17 @@ def __init__(self, bot: Red):
async def _repo_add(self, ctx, name: str, repo_url: str, branch: str = None):
"""Add a new repo.
The name can only contain characters A-z, numbers and underscores.
Repo names can only contain characters A-z, numbers, underscores, and hyphens.
The branch will be the default branch if not specified.
"""
agreed = await do_install_agreement(ctx)
if not agreed:
return
if re.match("^[a-zA-Z0-9_\-]*$", name) is None:
await ctx.send(
_("Repo names can only contain characters A-z, numbers, underscores, and hyphens.")
)
return
try:
# noinspection PyTypeChecker
repo = await self._repo_manager.add_repo(name=name, url=repo_url, branch=branch)
@@ -241,6 +247,12 @@ def __init__(self, bot: Red):
branch,
exc_info=err,
)
except OSError:
await ctx.send(
_(
"Something went wrong trying to add that repo. Your repo name might have an invalid character."
)
)
else:
await ctx.send(_("Repo `{name}` successfully added.").format(name=name))
if repo.install_msg is not None:

0 comments on commit 9b60816

Please sign in to comment.
You can’t perform that action at this time.