@cryptotaxi247 / kubo / commits / 468494e5e

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)