All of lore.kernel.org
 help / color / mirror / Atom feed
From: MOHAMMAD RASIM <mohammad.rasim96@gmail.com>
To: yocto@yoctoproject.org
Subject: Re: bitbake is corrupting my files during unpacking
Date: Sat, 21 Jul 2018 10:55:13 +0300	[thread overview]
Message-ID: <2d030ea4-b2df-58fe-9947-e1c4e40ea17b@gmail.com> (raw)
In-Reply-To: <051ffcba-0255-4d93-e8f8-01993e967ef2@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 8303 bytes --]

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 
(dhowells@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 ?

[-- Attachment #2: Type: text/html, Size: 9768 bytes --]

  reply	other threads:[~2018-07-21  7:55 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-21  5:37 bitbake is corrupting my files during unpacking MOHAMMAD RASIM
2018-07-21  7:55 ` MOHAMMAD RASIM [this message]
2018-07-23 18:42   ` Andre McCurdy
2018-07-23 18:51     ` Burton, Ross
2018-07-27  9:27       ` MOHAMMAD RASIM
2018-07-27  9:34         ` Burton, Ross
2018-07-27  9:38           ` MOHAMMAD RASIM

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2d030ea4-b2df-58fe-9947-e1c4e40ea17b@gmail.com \
    --to=mohammad.rasim96@gmail.com \
    --cc=yocto@yoctoproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.