well apparently this is caused by the unzip binary that is compiled by the openembedded unzip recipe. If I unzip the same zip file with the unzip binary that is shipped with my system(manjaro) then the files are not corrupted but when I use the unzip binary compiled by the openembedded recipe I get error and file corruptions. These are some of the errors I get when unzipping with the openembedded unzip:
lchmod (file attributes) error: Function not implemented
linux-amlogic-amlogic-3.14-nougat/security/keys/request_key_auth.c -> /* Request key authorisation token key definition.^J *^J * Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.^J * Written by David Howells (dhowe...@redhat.com)^J *^J * This program is free software; you can redistribute it and/or^J * modify it under the terms of the GNU General Public License^J * as published by the Free Software Foundation; either version^J * 2 of the License, or (at your option) any later version.^J *^J * See Documentation/security/keys-request-key.txt^J */^J^J#include <linux/module.h>^J#include <linux/sched.h>^J#include <linux/err.h>^J#include <linux/seq_file.h>^J#include <linux/slab.h>^J#include <asm/uaccess.h>^J#include "internal.h"^J#include <keys/user-type.h>^J^Jstatic int request_key_auth_instantiate(struct key *,^J^I^I^I^I^Istruct key_preparsed_payload *);^Jstatic void request_key_auth_describe(const struct key *, struct seq_file *);^Jstatic void request_key_auth_revoke(struct key *);^Jstatic void request_key_auth_destroy(struct key *);^Jstatic long request_key_auth_read(const struct key *, char __user *, size_t);^J^J/*^J * The request-key authorisation key type definition.^J */^Jstruct key_type key_type_request_key_auth = {^J^I.name^I^I= ".request_key_auth",^J^I.def_datalen^I= sizeof(struct request_key_auth),^J^I.instantiate^I= request_key_auth_instantiate,^J^I.describe^I= request_key_auth_describe,^J^I.revoke^I^I= request_key_auth_revoke,^J^I.destroy^I= request_key_auth_destroy,^J^I.read^I^I= request_key_auth_read,^J};^J^J/*^J * Instantiate a request-key authorisation key.^J */^Jstatic int request_key_auth_instantiate(struct key *key,^J^I^I^I^I^Istruct key_preparsed_payload *prep)^J{^J^Ikey->payload.data = (struct request_key_auth *)prep->data;^J^Ireturn 0;^J}^J^J/*^J * Describe an authorisation token.^J */^Jstatic void request_key_auth_describe(const struct key *key,^J^I^I^I^I struct seq_file *m)^J{^J^Istruct request_key_auth *rka = key->payload.data;^J^J^Iseq_puts(m, "key:");^J^Iseq_puts(m, key->description);^J^Iif (key_is_instantiated(key))^J^I^Iseq_printf(m, " pid:%d ci:%zu", rka->pid, rka->callout_len);^J}^J^J/*^J * Read the callout_info data (retrieves the callout information).^J * - the key's semaphore is read-locked^J */^Jstatic long request_key_auth_read(const struct key *key,^J^I^I^I^I  char __user *buffer, size_t buflen)^J{^J^Istruct request_key_auth *rka = key->payload.data;^J^Isize_t datalen;^J^Ilong ret;^J^J^Idatalen = rka->callout_len;^J^Iret = datalen;^J^J^I/* we can return the data as is */^J^Iif (buffer && buflen > 0) {^J^I^Iif (buflen > datalen)^J^I^I^Ibuflen = datalen;^J^J^I^Iif (copy_to_user(buffer, rka->callout_info, buflen) != 0)^J^I^I^Iret = -EFAULT;^J^I}^J^J^Ireturn ret;^J}^J^J/*^J * Handle revocation of an authorisation token key.^J *^J * Called with the key sem write-locked.^J */^Jstatic void request_key_auth_revoke(struct key *key)^J{^J^Istruct request_key_auth *rka = key->payload.data;^J^J^Ikenter("{%d}", key->serial);^J^J^Iif (rka->cred) {^J^I^Iput_cred(rka->cred);^J^I^Irka->cred = NULL;^J^I}^J}^J^J/*^J * Destroy an instantiation authorisation token key.^J */^Jstatic void request_key_auth_destroy(struct key *key)^J{^J^Istruct request_key_auth *rka = key->payload.data;^J^J^Ikenter("{%d}", key->serial);^J^J^Iif (rka->cred) {^J^I^Iput_cred(rka->cred);^J^I^Irka->cred = NULL;^J^I}^J^J^Ikey_put(rka->target_key);^J^Ikey_put(rka->dest_keyring);^J^Ikfree(rka->callout_info);^J^Ikfree(rka);^J}^J^J/*^J * Create an authorisation token for /sbin/request-key or whoever to gain^J * access to the caller's security data.^J */^Jstruct key *request_key_auth_new(struct key *target, const void *callout_info,^J^I^I^I^I size_t callout_len, struct key *dest_keyring)^J{^J^Istruct request_key_auth *rka, *irka;^J^Iconst struct cred *cred = current->cred;^J^Istruct key *authkey = NULL;^J^Ichar desc[20];^J^Iint ret;^J^J^Ikenter("%d,", target->serial);^J^J^I/* allocate a auth record */^J^Irka = kmalloc(sizeof(*rka), GFP_KERNEL);^J^Iif (!rka) {^J^I^Ikleave(" = -ENOMEM");^J^I^Ireturn ERR_PTR(-ENOMEM);^J^I}^J^Irka->callout_info = kmalloc(callout_len, GFP_KERNEL);^J^Iif (!rka->callout_info) {^J^I^Ikleave(" = -ENOMEM");^J^I^Ikfree(rka);^J^I^Ireturn ERR_PTR(-ENOMEM);^J^I}^J^J^I/* see if the calling process is already servicing the key request of^J^I * another process */^J^Iif (cred->request_key_auth) {^J^I^I/* it is - use that instantiation context here too */^J^I^Idown_read(&cred->request_key_auth->sem);^J^J^I^I/* if the auth key has been revoked, then the key we're^J^I^I * servicing is already instantiated */^J^I^Iif (test_bit(KEY_FLAG_REVOKED, &cred->request_key_auth->flags))^J^I^I^Igoto auth_key_revoked;^J^J^I^Iirka = cred->request_key_auth->payload.data;^J^I^Irka->cred = get_cred(irka->cred);^J^I^Irka->pid = irka->pid;^J^J^I^Iup_read(&cred->request_key_auth->sem);^J^I}^J^Ielse {^J^I^I/* it isn't - use this process as the context */^J^I^Irka->cred = get_cred(cred);^J^I^Irka->pid = current->pid;^J^I}^J^J^Irka->target_key = key_get(target);^J^Irka->dest_keyring = key_get(dest_keyring);^J^Imemcpy(rka->callout_info, callout_info, callout_len);^J^Irka->callout_len = callout_len;^J^J^I/* allocate the auth key */^J^Isprintf(desc, "%x", target->serial);^J^J^Iauthkey = key_alloc(&key_type_request_key_auth, desc,^J^I^I^I cred->fsuid, cred->fsgid, cred,^J^I^I^I    KEY_POS_VIEW | KEY_POS_READ | KEY_POS_SEARCH |^J^I^I^I    KEY_USR_VIEW, KEY_ALLOC_NOT_IN_QUOTA);^J^Iif (IS_ERR(authkey)) {^J^I^Iret = PTR_ERR(authkey);^J^I^Igoto error_alloc;^J^I}^J^J^I/* construct the auth key */^J^Iret = key_instantiate_and_link(authkey, rka, 0, NULL, NULL);^J^Iif (ret < 0)^J^I^Igoto error_inst;^J^J^Ikleave(" = {%d,%d}", authkey->serial, atomic_read(&authkey->usage));^J^Ireturn authkey;^J^Jauth_key_revoked:^J^Iup_read(&cred->request_key_auth->sem);^J^Ikfree(rka->callout_info);^J^Ikfree(rka);^J^Ikleave("= -EKEYREVOKED");^J^Ireturn ERR_PTR(-EKEYREVOKED);^J^Jerror_inst:^J^Ikey_revoke(authkey);^J^Ikey_put(authkey);^Jerror_alloc:^J^Ikey_put(rka->target_key);^J^Ikey_put(rka->dest_keyring);^J^Ikfree(rka->callout_info);^J^Ikfree(rka);^J^Ikleave("= %d", ret);^J^Ireturn ERR_PTR(ret);^J}^J^J/*^J * Search the current process's keyrings for the authorisation key for^J * instantiation of a key.^J */^Jstruct key *key_get_instantiation_authkey(key_serial_t target_id)^J{^J^Ichar description[16];^J^Istruct keyring_search_context ctx = {^J^I^I.index_key.type^I^I= &key_type_request_key_auth,^J^I^I.index_key.description^I= description,^J^I^I.cred^I^I^I= current_cred(),^J^I^I.match^I^I^I= user_match,^J^I^I.match_data^I^I= description,^J^I^I.flags^I^I^I= KEYRING_SEARCH_LOOKUP_DIRECT,^J^I};^J^Istruct key *authkey;^J^Ikey_ref_t authkey_ref;^J^J^Isprintf(description, "%x", target_id);^J^J^Iauthkey_ref = search_process_keyrings(&ctx);^J^J^Iif (IS_ERR(authkey_ref)) {^J^I^Iauthkey = ERR_CAST(authkey_ref);^J^I^Iif (authkey == ERR_PTR(-EAGAIN))^J^I^I^Iauthkey = ERR_PTR(-ENOKEY);^J^I^Igoto error;^J^I}^J^J^Iauthkey = key_ref_to_ptr(authkey_ref);^J^Iif (test_bit(KEY_FLAG_REVOKED, &authkey->flags)) {^J^I^Ikey_put(authkey);^J^I^Iauthkey = ERR_PTR(-EKEYREVOKED);^J^I}^J^Jerror:^J^Ireturn authkey;^J}^J
symlink error: File name too long
lchmod (file attributes) error: Function not implemented
linux-amlogic-amlogic-3.14-nougat/tools/gator/daemon/k/perf_event.h -> perf_event.3.12.h
lchmod (file attributes) error: Function not implemented

This error happens to multiple files where the file is symlinked to the content of the file and not to a path !
Where should I report this bug ? openembedded ? unzip upstream ?
-- 
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to