Commit 10c36282 authored by Juan Batiz-Benet's avatar Juan Batiz-Benet

Merge pull request #1282 from travisperson/bug/panic-on-empty-path

Bug/panic on empty path
parents 988b158d 2c71c548
......@@ -29,6 +29,11 @@ func Resolve(ctx context.Context, n *IpfsNode, p path.Path) (*merkledag.Node, er
}
seg := p.Segments()
if len(seg) < 2 || seg[1] == "" { // just "/<protocol/>" without further segments
return nil, path.ErrNoComponents
}
extensions := seg[2:]
resolvable, err := path.FromSegments("/", seg[0], seg[1])
if err != nil {
......
package core
import (
"testing"
path "github.com/ipfs/go-ipfs/path"
)
func TestResolveNoComponents(t *testing.T) {
n, err := NewMockNode()
if n == nil || err != nil {
t.Fatal("Should have constructed a mock node", err)
}
_, err = Resolve(n.Context(), n, path.Path("/ipns/"))
if err != path.ErrNoComponents {
t.Fatal("Should error with no components (/ipns/).", err)
}
_, err = Resolve(n.Context(), n, path.Path("/ipfs/"))
if err != path.ErrNoComponents {
t.Fatal("Should error with no components (/ipfs/).", err)
}
}
......@@ -4,6 +4,7 @@ package path
import (
"fmt"
"time"
"errors"
mh "github.com/ipfs/go-ipfs/Godeps/_workspace/src/github.com/jbenet/go-multihash"
"github.com/ipfs/go-ipfs/Godeps/_workspace/src/golang.org/x/net/context"
......@@ -14,6 +15,10 @@ import (
var log = u.Logger("path")
// Paths after a protocol must contain at least one component
var ErrNoComponents = errors.New(
"path must contain at least one component")
// ErrNoLink is returned when a link is not found in a path
type ErrNoLink struct {
name string
......@@ -43,7 +48,7 @@ func SplitAbsPath(fpath Path) (mh.Multihash, []string, error) {
// if nothing, bail.
if len(parts) == 0 {
return nil, nil, fmt.Errorf("ipfs path must contain at least one component")
return nil, nil, ErrNoComponents
}
// first element in the path is a b58 hash (for now)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment