HBASE-3585 isLegalFamilyName() can throw ArrayOutOfBoundException
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1327666 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
9ae52f0eab
commit
89a985f28c
|
@ -40,6 +40,8 @@ import org.apache.hadoop.hbase.util.Bytes;
|
|||
import org.apache.hadoop.io.Text;
|
||||
import org.apache.hadoop.io.WritableComparable;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
/**
|
||||
* An HColumnDescriptor contains information about a column family such as the
|
||||
* number of versions, compression settings, etc.
|
||||
|
@ -379,12 +381,13 @@ public class HColumnDescriptor implements WritableComparable<HColumnDescriptor>
|
|||
* @throws IllegalArgumentException If not null and not a legitimate family
|
||||
* name: i.e. 'printable' and ends in a ':' (Null passes are allowed because
|
||||
* <code>b</code> can be null when deserializing). Cannot start with a '.'
|
||||
* either.
|
||||
* either. Also Family can not be an empty value.
|
||||
*/
|
||||
public static byte [] isLegalFamilyName(final byte [] b) {
|
||||
if (b == null) {
|
||||
return b;
|
||||
}
|
||||
Preconditions.checkArgument(b.length != 0, "Family name can not be empty");
|
||||
if (b[0] == '.') {
|
||||
throw new IllegalArgumentException("Family names cannot start with a " +
|
||||
"period: " + Bytes.toString(b));
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
/**
|
||||
* Licensed to the Apache Software Foundation (ASF) under one
|
||||
* or more contributor license agreements. See the NOTICE file
|
||||
* distributed with this work for additional information
|
||||
* regarding copyright ownership. The ASF licenses this file
|
||||
* to you under the Apache License, Version 2.0 (the
|
||||
* "License"); you may not use this file except in compliance
|
||||
* with the License. You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.hadoop.hbase;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
/** Tests the HColumnDescriptor with appropriate arguments */
|
||||
public class TestHColumnDescriptor {
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("deprecation")
|
||||
/** Tests HColumnDescriptor with empty familyName*/
|
||||
public void testHColumnDescriptorShouldThrowIAEWhenFamiliyNameEmpty()
|
||||
throws Exception {
|
||||
try {
|
||||
new HColumnDescriptor("".getBytes());
|
||||
} catch (IllegalArgumentException e) {
|
||||
assertEquals("Family name can not be empty", e.getLocalizedMessage());
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue