From 38185f6a10944d05af8c119e4f5f3fcc0cf47a09 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 26 Jan 2015 17:42:35 +0100 Subject: [PATCH] BUG-1434: fix NPEs when using null byte arrays Commit introduced a regression, which caused NPEs being thrown when the byte array was null (and hence failed to copy). Guard the copy with an explicit null check and do not use Arrays.copyOf(), but clone(). Change-Id: I832ccae7a269548954705b2c1cdb1a42f83f71a4 Signed-off-by: Robert Varga --- .../yangtools/sal/java/api/generator/BaseTemplate.xtend | 2 +- .../yangtools/sal/java/api/generator/ClassTemplate.xtend | 2 +- .../yangtools/sal/java/api/generator/UnionTemplate.xtend | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend index 3cb9d8ce61..9e33442de2 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend @@ -102,7 +102,7 @@ abstract class BaseTemplate { ''' public «field.returnType.importedName» «field.getterMethodName»() { «IF field.returnType.importedName.contains("[]")» - return Arrays.copyOf(«field.fieldName», «field.fieldName».length); + return «field.fieldName» == null ? null : «field.fieldName».clone(); «ELSE» return «field.fieldName»; «ENDIF» diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend index 1f9d9d0a4b..b79d871f88 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend @@ -297,7 +297,7 @@ class ClassTemplate extends BaseTemplate { «FOR p : properties» «IF p.returnType.importedName.contains("[]")» - this.«p.fieldName» = Arrays.copyOf(«p.fieldName», «p.fieldName».length); + this.«p.fieldName» = «p.fieldName» == null ? null : «p.fieldName».clone(); «ELSE» this.«p.fieldName» = «p.fieldName»; «ENDIF» diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/UnionTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/UnionTemplate.xtend index ecaaf8af01..1d8a156e24 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/UnionTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/UnionTemplate.xtend @@ -53,7 +53,7 @@ class UnionTemplate extends ClassTemplate { «FOR other : finalProperties» «IF other.name.equals("value")» «IF other.returnType.importedName.contains("[]")» - this.«other.fieldName» = Arrays.copyOf(«other.fieldName», «other.fieldName».length); + this.«other.fieldName» = «other.fieldName» == null ? null : «other.fieldName».clone(); «ELSE» this.«other.fieldName» = «other.fieldName»; «ENDIF» @@ -126,7 +126,7 @@ class UnionTemplate extends ClassTemplate { «IF !properties.empty» «FOR p : properties» «IF p.returnType.importedName.contains("[]")» - this.«p.fieldName» = Arrays.copyOf(source.«p.fieldName», source.«p.fieldName».length); + this.«p.fieldName» = source.«p.fieldName» == null ? null : source.«p.fieldName».clone(); «ELSE» this.«p.fieldName» = source.«p.fieldName»; «ENDIF» -- 2.36.6