diff --git a/src/adb_comp.c b/src/adb_comp.c index d4f55952bf0cfaa07fe4b71db9a8a3f820297f36..2f92924f6cc5226ef043f6e6acdffb6c61df7160 100644 --- a/src/adb_comp.c +++ b/src/adb_comp.c @@ -57,14 +57,14 @@ static const struct compression_info *compression_info_by_alg(uint8_t alg) int adb_parse_compression(const char *spec_string, struct adb_compression_spec *spec) { const struct compression_info *ci; - const char *delim = strchr(spec_string, ':'); + const char *delim = strchrnul(spec_string, ':'); char *end; long level = 0; ci = compression_info_by_name(spec_string, delim - spec_string, &spec->alg); if (!ci) goto err; if (*delim != 0) { - if (delim[0] != ':' || delim[1] == 0) goto err; + if (delim[1] == 0) goto err; if (ci->max_level == 0) goto err; level = strtol(delim+1, &end, 0); @@ -142,7 +142,7 @@ struct apk_ostream *adb_compress(struct apk_ostream *os, struct adb_compression_ } if (apk_ostream_write(os, "ADBc", 4) < 0) goto err; - if (apk_ostream_write(os, &spec, sizeof spec) < 0) goto err; + if (apk_ostream_write(os, spec, sizeof *spec) < 0) goto err; return ci->compress(os, spec->level); err: diff --git a/src/io_zstd.c b/src/io_zstd.c index 5215b62cf16659df23adef6ee55514c60d02543b..c25b4a4c0b46e84196587d8f08aa89e69dfe0577 100644 --- a/src/io_zstd.c +++ b/src/io_zstd.c @@ -221,7 +221,8 @@ struct apk_ostream *apk_ostream_zstd(struct apk_ostream *output, uint8_t level) if (threads < bounds.lowerBound) threads = bounds.lowerBound; if (threads > bounds.upperBound) threads = bounds.upperBound; - errc = ZSTD_CCtx_setParameter(os->ctx, ZSTD_c_compressionLevel, level); + /* default level is 3 and that's not that useful here */ + errc = ZSTD_CCtx_setParameter(os->ctx, ZSTD_c_compressionLevel, level ?: 9); if (ZSTD_isError(errc)) { free(os); goto err;