On Fri, 2022-10-07 at 19:09 +0000, Elliott, Robert (Servers) wrote: > > -----Original Message----- > > From: gjo...@linux.vnet.ibm.com <gjo...@linux.vnet.ibm.com> > > Sent: Friday, August 19, 2022 5:32 PM > > To: linux-bl...@vger.kernel.org > > Cc: linuxppc-dev@lists.ozlabs.org; jonathan.derr...@linux.dev; > > brk...@linux.vnet.ibm.com; msucha...@suse.de; m...@ellerman.id.au; > > na...@linux.ibm.com; ax...@kernel.dk; a...@linux-foundation.org; > > gjo...@linux.vnet.ibm.com; linux-...@vger.kernel.org; > > keyri...@vger.kernel.org; dhowe...@redhat.com; jar...@kernel.org > > Subject: [PATCH v4 2/3] powerpc/pseries: PLPKS SED Opal keystore > > support > > > > +++ b/arch/powerpc/platforms/pseries/plpks_sed_ops.c > ... > > +struct plpks_sed_object_data { > > + u_char version; > > + u_char pad1[7]; > > + u_long authority; > > + u_long range; > > + u_int key_len; > > + u_char key[32]; > > +}; > ... > > +/* > > + * Read the SED Opal key from PLPKS given the label > > + */ > > +int sed_read_key(char *keyname, char *key, u_int *keylen) > > +{ > ... > > + *keylen = be32_to_cpu(data->key_len); > > + > > + if (var.data) { > > + memcpy(key, var.data + offset, var.datalen - offset); > > + key[*keylen] = '\0'; > > Is there a guarantee that key_len is always < sizeof key, or > does that need to be checked in more places?
Changed keylen paramter to be the maximum size that it copied. This will help avoid buffer overwrite.