kevva / kevva/decompress

decompress function is stucked when i pass the buffer array into it

Open
#99 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
419
Forks
55
PR merge metrics
No merged PRs in 30d

Description

I've got a problem with decompression library. I use it for unarchive file. I haven't had problems with it before but recently i've got a bug.
I get this archive as base64 string, then a transform it into Buffer and finally pass this Buffer into decompression function and it's just stucked. There are no info or error messages, my server is stucked too. I guess there must be infinity loop or something like this.

Error Result:

const value = 'UEsDBBQACAAIAONFuVQAAAAAAAAAAAAAAAAWAAAAZmlsZV9kZXRlY3RfYnlfTUQ1LmlvY4VSwY7bIBS8V+o/IO4EjMFAZGdVdVVppaaX7qG3iIWXDWqMI0Oa9O9LnGyyaQ+9WPjNm3lvBtqHY79Fv2BMYYgdrmYMI4hu8CG+dnifiE0uBPyw+PihDYNDpTum+TGFDm9y3s0pPRwOs0M9G8ZXyhmr6I/l1+9uA70lIaZsowN8Zfn/szAKpUtLZRsnKqIEByI0M8RC0xAttQbOrJemwWhrUyZ92XUdoJA44xVhNWHyuVJzrueMXUZfx6ZpRpr1NvpgY565oS8LVIwWc7iYRKhNm2HMKw/JjWGXSyyLL2ELq+WjbOm/2ESx+1wA8CtvMyz+2qOZi6al9y0Taxviz4To+cfDOsRwlSyVp7Kis3kY0bCD8XTo8Kdvj+eAxAuohnNDfG0NEVZZYurKlw8w2bi1WCuDL0rvtZ4y9JMAr+rSWluinJBEKKuIFlYSy2sD2r/UTiiM3FCIeXoaId30iuLnIWY4ZuQHt+8h5g6fUjrJY5TAjm5zq9Cll2lfgPx7Bx3uw4gvtt+LxfyGe4kXojHagjFKKvB1pYxmunKyBs29WAvb0gvpZpLeuXyL8VY9B03vkm5PF7/4A1BLBwgAAAAAuQEAAAAAAABQSwECLQMUAAgACADjRblUAAAAALkBAAAAAAAAFgAAAAAAAAAAACAApIEAAAAAZmlsZV9kZXRlY3RfYnlfTUQ1LmlvY1BLBQYAAAAAAQABAEQAAAD9AQAAAAA='

const buffered = Buffer.from(value, "base64");
const data = await decompress(buffered); // my program stuck here

it's a proof that my base64 right - https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)Unzip('',false)&input=VUVzREJCUUFDQUFJQU9ORnVWUUFBQUFBQUFBQUFBQUFBQUFXQUFBQVptbHNaVjlrWlhSbFkzUmZZbmxmVFVRMUxtbHZZNFZTd1k3YklCUzhWK28vSU80RWpNRkFaR2RWZFZWcHBhYVg3cUczaUlXWERXcU1JME9hOU85TG5HeXlhUSs5V1BqTm0zbHZCdHFIWTc5RnYyQk1ZWWdkcm1ZTUk0aHU4Q0crZG5pZmlFMHVCUHl3K1BpaERZTkRwVHVtK1RHRkRtOXkzczBwUFJ3T3MwTTlHOFpYeWhtcjZJL2wxKzl1QTcwbElhWnNvd044WmZuL3N6QUtwVXRMWlJzbktxSUVCeUkwTThSQzB4QXR0UWJPckplbXdXaHJVeVo5MlhVZG9KQTQ0eFZoTldIeXVWSnpydWVNWFVaZng2WnBScHIxTnZwZ1k1NjVvUzhMVkl3V2M3aVlSS2hObTJITUt3L0pqV0dYU3l5TEwyRUxxK1dqYk9tLzJFU3grMXdBOEN0dk15eisycU9aaTZhbDl5MFRheHZpejRUbytjZkRPc1J3bFN5VnA3S2lzM2tZMGJDRDhYVG84S2R2aitlQXhBdW9obk5EZkcwTkVWWlpZdXJLbHc4dzJiaTFXQ3VETDBydnRaNHk5Sk1BcityU1dsdWluSkJFS0t1SUZsWVN5MnNEMnIvVVRpaU0zRkNJZVhvYUlkMzBpdUxuSVdZNFp1UUh0KzhoNWc2ZlVqckpZNVRBam01enE5Q2xsMmxmZ1B4N0J4M3V3NGd2dHQrTHhmeUdlNGtYb2pIYWdqRktLdkIxcFl4bXVuS3lCczI5V0F2YjBndnBacExldVh5TDhWWTlCMDN2a201UEY3LzRBMUJMQndnQUFBQUF1UUVBQUFBQUFBQlFTd0VDTFFNVUFBZ0FDQURqUmJsVUFBQUFBTGtCQUFBQUFBQUFGZ0FBQUFBQUFBQUFBQ0FBcElFQUFBQUFabWxzWlY5a1pYUmxZM1JmWW5sZlRVUTFMbWx2WTFCTEJRWUFBQUFBQVFBQkFFUUFBQUQ5QVFBQUFBQT0

Access result:

const value2 = 'UEsDBBQACAAIADJtwlQAAAAAAAAAAAAAAAAWAAAAZmlsZV9kZXRlY3RfYnlfTUQ1LmlvY4VSwY7bIBS8V+o/IO4EjMFAZGdVdVVppaaX7qG3iIWXDWqMI0Oa9O9LnGyyaQ+9WPjNm3lvBtqHY79Fv2BMYYgdrmYMI4hu8CG+dnifiE0uBPyw+PihDYNDpTum+TGFDm9y3s0pPRwOs0M9G8ZXyhmr6I/l1+9uA70lIaZsowN8Zfn/szAKpUtLZRsnKqIEByI0M8RC0xAttQbOrJemwWhrUyZ92XUdoJA44xVhNWHyuVJzrueMXUZfx6ZpRpr1NvpgY565oS8LVIwWc7iYRKhNm2HMKw/JjWGXSyyLL2ELq+WjbOm/2ESx+1wA8CtvMyz+2qOZi6al9y0Taxviz4To+cfDOsRwlSyVp7Kis3kY0bCD8XTo8Kdvj+eAxAuohnNDfG0NEVZZYurKlw8w2bi1WCuDL0rvtZ4y9JMAr+rSWluinJBEKKuIFlYSy2sD2r/UTiiM3FCIeXoaId30iuLnIWY4ZuQHt+8h5g6fUjrJY5TAjm5zq9Cll2lfgPx7Bx3uw4gvtt+LxfyGe4kXojHagjFKKvB1pYxmunKyBs29WAvb0gvpZpLeuXyL8VY9B03vkm5PF7/4A1BLBwhca76XuQEAAAYDAABQSwECLQMUAAgACAAybcJUXGu+l7kBAAAGAwAAFgAAAAAAAAAAACAApIEAAAAAZmlsZV9kZXRlY3RfYnlfTUQ1LmlvY1BLBQYAAAAAAQABAEQAAAD9AQAAAAA='

const buffered = Buffer.from(value2, "base64");
const data = await decompress(buffered); // using value2 i got right object with data

decompressing with value2 - https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)Unzip('',false)&input=VUVzREJCUUFDQUFJQURKdHdsUUFBQUFBQUFBQUFBQUFBQUFXQUFBQVptbHNaVjlrWlhSbFkzUmZZbmxmVFVRMUxtbHZZNFZTd1k3YklCUzhWK28vSU80RWpNRkFaR2RWZFZWcHBhYVg3cUczaUlXWERXcU1JME9hOU85TG5HeXlhUSs5V1BqTm0zbHZCdHFIWTc5RnYyQk1ZWWdkcm1ZTUk0aHU4Q0crZG5pZmlFMHVCUHl3K1BpaERZTkRwVHVtK1RHRkRtOXkzczBwUFJ3T3MwTTlHOFpYeWhtcjZJL2wxKzl1QTcwbElhWnNvd044WmZuL3N6QUtwVXRMWlJzbktxSUVCeUkwTThSQzB4QXR0UWJPckplbXdXaHJVeVo5MlhVZG9KQTQ0eFZoTldIeXVWSnpydWVNWFVaZng2WnBScHIxTnZwZ1k1NjVvUzhMVkl3V2M3aVlSS2hObTJITUt3L0pqV0dYU3l5TEwyRUxxK1dqYk9tLzJFU3grMXdBOEN0dk15eisycU9aaTZhbDl5MFRheHZpejRUbytjZkRPc1J3bFN5VnA3S2lzM2tZMGJDRDhYVG84S2R2aitlQXhBdW9obk5EZkcwTkVWWlpZdXJLbHc4dzJiaTFXQ3VETDBydnRaNHk5Sk1BcityU1dsdWluSkJFS0t1SUZsWVN5MnNEMnIvVVRpaU0zRkNJZVhvYUlkMzBpdUxuSVdZNFp1UUh0KzhoNWc2ZlVqckpZNVRBam01enE5Q2xsMmxmZ1B4N0J4M3V3NGd2dHQrTHhmeUdlNGtYb2pIYWdqRktLdkIxcFl4bXVuS3lCczI5V0F2YjBndnBacExldVh5TDhWWTlCMDN2a201UEY3LzRBMUJMQndoY2E3Nlh1UUVBQUFZREFBQlFTd0VDTFFNVUFBZ0FDQUF5YmNKVVhHdStsN2tCQUFBR0F3QUFGZ0FBQUFBQUFBQUFBQ0FBcElFQUFBQUFabWxzWlY5a1pYUmxZM1JmWW5sZlRVUTFMbWx2WTFCTEJRWUFBQUFBQVFBQkFFUUFBQUQ5QVFBQUFBQT0

Contributor guide

No contributing guide indexed for this repository

Research direction

Reproduce the decompress(buffered) call with value, then compare it with value2, which completes successfully. Trace where processing of the first input stops progressing; done means it returns or reports an error instead of leaving the server stuck while preserving the successful behavior for value2.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, nodejs
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.