D7105: dirs: reject consecutive slashes in paths

yuja (Yuya Nishihara) phabricator at mercurial-scm.org
Wed Oct 16 08:25:11 EDT 2019


yuja added a comment.


  > diff --git a/mercurial/cext/dirs.c b/mercurial/cext/dirs.c
  >
  > - a/mercurial/cext/dirs.c
  >
  > +++ b/mercurial/cext/dirs.c
  > @@ -52,6 +52,7 @@
  >  {
  >
  >   	const char *cpath = PyBytes_AS_STRING(path);
  >   	Py_ssize_t pos = PyBytes_GET_SIZE(path);
  >
  > +	Py_ssize_t prev_pos = -1;
  >
  >   	PyObject *key = NULL;
  >   	int ret = -1;
  >
  > @@ -64,6 +65,13 @@
  >
  > - locations, the references are known so these violations should go
  > - unnoticed. */ 	while ((pos = _finddir(cpath, pos - 1)) != -1) {
  >
  > +		if (pos && prev_pos == pos + 1) {
  
  Maybe it's better to reject leading "/" and trailing "/".
  
  > +			PyErr_SetString(
  > +			    PyExc_ValueError,
  > +			    "invalid empty directory name in dirs.c _addpath");
  > +			return -1;
  
  `goto bail;` is the way to error out from this function, though it doesn't
  matter here.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7105/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7105

To: durin42, #hg-reviewers, indygreg
Cc: yuja, indygreg, mercurial-devel


More information about the Mercurial-devel mailing list