break with ErrObjectTooLarge
Henry committed
Oct 19, 2014 at 17:07 UTC
468494e5e5cfc6f042ea6141703aea335b6cc30b
1 file changed
+10
-1
core/commands/object.go
+10
-1
@@ -93,6 +93,11 @@ func ObjectGet(n *core.IpfsNode, args []string, opts map[string]interface{}, out
93
return err
94
}
95
96
+// ErrObjectTooLarge is returned when too much data was read from stdin. current limit 512k
97
+var ErrObjectTooLarge = errors.New("input object was too large. limit is 512kbytes")
98
+
99
+const inputLimit = 512 * 1024
100
+
101
// ObjectPut takes a format option, serilizes bytes from stdin and updates the dag with that data
102
func ObjectPut(n *core.IpfsNode, args []string, opts map[string]interface{}, out io.Writer) error {
103
var (
@@ -101,11 +106,15 @@ func ObjectPut(n *core.IpfsNode, args []string, opts map[string]interface{}, out
106
err error
107
)
108
104
- data, err = ioutil.ReadAll(io.LimitReader(os.Stdin, 512*1024))
109
+ data, err = ioutil.ReadAll(io.LimitReader(os.Stdin, inputLimit+10))
110
if err != nil {
111
return fmt.Errorf("ObjectPut error: %v", err)
112
}
113
114
+ if len(data) >= inputLimit {
115
+ return ErrObjectTooLarge
116
+ }
117
+
118
switch getObjectEnc(opts["encoding"]) {
119
case objectEncodingJSON:
120
dagnode = new(dag.Node)