From 468494e5e5cfc6f042ea6141703aea335b6cc30b Mon Sep 17 00:00:00 2001 From: Henry <cryptix@riseup.net> Date: Sun, 19 Oct 2014 17:07:03 +0200 Subject: [PATCH] break with ErrObjectTooLarge --- core/commands/object.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/core/commands/object.go b/core/commands/object.go index be7cc71d7..5d0ccddab 100644 --- a/core/commands/object.go +++ b/core/commands/object.go @@ -93,6 +93,11 @@ func ObjectGet(n *core.IpfsNode, args []string, opts map[string]interface{}, out return err } +// ErrObjectTooLarge is returned when too much data was read from stdin. current limit 512k +var ErrObjectTooLarge = errors.New("input object was too large. limit is 512kbytes") + +const inputLimit = 512 * 1024 + // ObjectPut takes a format option, serilizes bytes from stdin and updates the dag with that data func ObjectPut(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error { var ( @@ -101,11 +106,15 @@ func ObjectPut(n *core.IpfsNode, args []string, opts map[string]interface{}, out err error ) - data, err = ioutil.ReadAll(io.LimitReader(os.Stdin, 512*1024)) + data, err = ioutil.ReadAll(io.LimitReader(os.Stdin, inputLimit+10)) if err != nil { return fmt.Errorf("ObjectPut error: %v", err) } + if len(data) >= inputLimit { + return ErrObjectTooLarge + } + switch getObjectEnc(opts["encoding"]) { case objectEncodingJSON: dagnode = new(dag.Node) -- GitLab